herramientas computacionales para la matemática - utm.mxvero0304/hcpm/6-arreglos-matrices.pdf ·...

25
Herramientas computacionales para la matemática MATLAB: Arreglos Verónica Borja Macías Marzo 2013 1

Upload: truonglien

Post on 06-Feb-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

Herramientas computacionales para la matemáticaMATLAB: Arreglos

Verónica Borja Macías

Marzo 2013

1

Page 2: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

2

Una matriz es un arreglo bidimensional, es una sucesión de números distribuidos en filas y columnas.

En MATLAB, una matriz se puede definir al escribir una lista de números encerrada entre corchetes. Los números se pueden separar mediante espacios o comas. Las nuevas filas se indican con punto y coma.

También se puede definir una matriz al hacer una lista de cada fila en una línea separada, incluso no necesita el punto y coma para la nueva línea basta con un enter.

Page 3: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

3

Ejemplos

>> A = [1 2 3; 4 5 6] % es una matriz con 2 filas y 3 columnasA =

1 2 34 5 6

>> A = [1 2 3;4 5 6]

A =1 2 34 5 6

>> A = [1 2 34 5 6]

A =1 2 34 5 6

Page 4: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

4

Para acceder a los elementos individuales de una matriz lo haremos utilizando subíndices, A(n,m) donde n es el número de fila y m el número de columna. Podemos indicar el último subíndice como end.

Ejemplos

>> A = [1 2 3; 4 5 6] >>A(1,1)ans=

1>>A(1,end)ans=

3>>A(2,2)ans=

5

Page 5: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

5

Si queremos que escriba toda una fila o columna usaremos los dos puntos.

Al igual que con los vectores podemos indicar que escriba una serie de filas o columnas.

Ejemplos

>> A = [1 2 3; 4 5 6] ;>> A (2,:) % escribe la segunda fila de la matrizans =

4 5 6>> A (:,2) % escribe la segunda columna de la matrizans =

25

Page 6: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

6

Ejemplos

>> A = [1 2 3; 4 5 6] >> A (2,2:3) % escribe de la segunda fila, columnas de la 2 a la 3ans =

5 6>> A (2, [3 1] ) % escribe de la segunda fila de la matriz, las columnas 3 y 1ans =

6 4>> A ( [2 1] , 2:3) % escribe de las filas 2 y 1 , las columnas de la 2 a la 3ans =

5 62 3

>> A (end, [1 3] ) % escribe de la última fila, las columnas 1 y 3ans =

4 6

Page 7: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

7

Matlab tiene además otra forma de identificar cada elemento de una matriz, de modo que podemos acceder a un elemento de una matriz indicando sólo un valor y no dos, pero debemos saber que el orden elegido por MATLAB es por columnas así los elementos de la matriz A del ejemplo anterior serían denominados:

Ejemplos

>> A = [1 2 3; 4 5 6] ;>>A(5)%accede al elemento A(1,3)ans=

3

A(1) A(3) A(5)

A(2) A(4) A(6)

Page 8: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

8

También es posible crear nuevas matrices a partir de vectores o matrices ya existentes.

Ejemplos

>>A=[1 2 3 4 5]A =

1 2 3 4 5>>B=1:2:9B =

1 3 5 7 9>>T = [ A; B]T =

1 2 3 4 51 3 5 7 9

Page 9: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

9

En MATLAB, es válido tener una matriz que esté vacía. Por ejemplo, los siguientes enunciados generarán cada uno una matriz vacía:

También es posible eliminar filas o columnas mediante la asignación del vacio [].

Ejemplos

>>A = [ ]>>B = 4:-1:5;

Page 10: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

10

Finalmente, usar el nombre de matriz con un solo dos puntos, (:) transforma la matriz en una sola columna.

Ejemplos

>> M = [1 2 3 ;4 5 6 ]; >> A=M(:)A =

1 42536

Page 11: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

11

Podemos ampliar una matriz asignando valores a nuevas posiciones y MATLAB llenara los espacios restantes con ceros.

Ejemplos

>> M = [1 2 3; 4 5 6; 7 8 9];>> M(1,5)=3M =

1 2 3 0 34 5 6 0 07 8 9 0 0

Page 12: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

12

Construcción abreviada de algunas matrices

zeros(n) crea una matriz cuadrada n x n de ceros.zeros(m,n) crea una matriz m x n de ceros.ones(n) crea una matriz cuadrada n x n de unos.ones(m,n) crea una matriz m x n de unos.rand(n) crea una matriz cuadrada n x n de números aleatorios

con distribución uniforme (0,1).rand(m,n) crea una matriz m x n de números aleatorios con

distribución uniforme (0,1).randn(n) crea una matriz cuadrada n x n de números aleatorios

con distribución normal (0,1).randn(m,n) crea una matriz m x n de números aleatorios con

distribución normal (0,1).

Page 13: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

13

Construcción abreviada de algunas matrices

eye(n) crea una matriz cuadrada n x n de unos en la diagonal y ceros el resto.

eye(m,n) crea una matriz m x n de unos en la diagonal y ceros el resto.

magic(n) crea una matriz cuadrada n x n de enteros de modo que sumen lo mismo las filas y las columnas.

hilb (n) crea una matriz cuadrada n x n de Hilbert, es decir, los elementos (i,j) responden a la expresión (1/(i+j-1)).

invhilb(n) crea una matriz cuadrada n x n que es la inversa de la matriz de Hilbert.

Page 14: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

14

Ejemplos

>> zeros (3) % matriz cuadrada 3 x 3 de cerosans =

0 0 00 0 00 0 0

>> zeros (2,5) % matriz 2 x 5 de cerosans =

0 0 0 0 00 0 0 0 0

>> ones (2,3) % matriz de unosans =

1 1 11 1 1

Page 15: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

15

Ejemplos

>> eye(3) % matriz identidad de 3 x 3ans =

1 0 00 1 00 0 1

>> rand(2,4) % matriz de 2 x 4 con entradas aleatoriasans =

0.8147 0.1270 0.6324 0.27850.9058 0.9134 0.0975 0.5469

>> magic(3) % matriz de 3x3 cuyos renglones y columnas suman lo mismo ans =

8 1 63 5 74 9 2

Page 16: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Operaciones con matrices

16

Podemos realizar operaciones entre matrices y escalares, entre matrices y vectores, entre matrices y matrices y dependiendo de la operación también es posible operar elemento a elemento.

Expresión OperaciónM + kM – kM*kM/k o M./kk .^ MM .^ k

Suma a los elementos de la matriz M el escalar kResta a los elementos de la matriz M el escalar kMultiplicación los elementos de la matriz M por el escalar kDivisión los elementos de la matriz M por el escalar kPotenciación del escalar k a cada uno de los elementos de M Potenciación los elementos M a la potencia escalar k

Page 17: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Operaciones con matrices

17

Expresión Operación

M + NM – NM * NM .* NM \ NM / N

M ./ NM .\ NM ^ kM .^ NM 'M .'

Suma de matrices (=)Resta de matrices (=)Multiplicación de matrices (c=r)Multiplicación elemento a elemento (=)División de matrices por la izquierda (sol. MX = N) (=r)División de matrices por la derecha (sol. XM = N) (=c)M/N = (M'\N')'División elemento a elemento por la derechaDivisión elemento a elemento por la izquierdaPotenciación de la matriz cuadrada M a la potencia k Potenciación elemento a elementoTransposición compleja conjugadaTransposición

Page 18: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Funciones para el análisis de matrices

18

Funciones (Con A matriz, v vector y n número natural)det (A) determinantediag (v) crea una matriz diagonal con v sobre la diagonaldiag (A) extrae la diagonal de A como un vector columnainv (A) matriz inversalength (A) máxima dimensiónsize (A) dimensionessize (A, 1) número de renglonessize (A, 2) número de columnasfind (A) índices de las entradas de A distintas de 0fliplr (A) voltea la matriz de izquierda a derechaflipud (A) voltea la matriz de arriba a abajoreshape (A,m,n) devuelve una matriz m x n cuyos elementos se toman por columnas de A

Page 19: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Funciones para el análisis de matrices

19

Funcionesrot90 (A) gira la matriz 90º en sentido contrario al relojrot90 (A,n) gira la matriz n x 90ºexpm (A) exponencial matriciallogm (A) logaritmo matricialsqrtm (A) raíz cuadrada matricialfunm (A,@función) evalúa la función en la matriz Aexp, log, sqrt… operan elemento a elementoeig (A) valores propioscond (A) número de condición (sensibilidad a errores en datos)norm (A) normanorm (A,n) norma-nnormest (A) estimación de la norma-2

Page 20: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Funciones para el análisis de matrices

20

Funcionesnull (A) espacio nuloorth (A) ortogonalizaciónpinv (A) pseudoinversapoly (A) polinomio característicorank (A) rangorref (A) reducción mediante la eliminación de Gausstrace (A) trazatril (A) matriz triangular inferior a partir de la matriz Atriu (A) matriz triangular superior a partir de la matriz A[VE,VA] = eig (A) VE son los vectores y VA son los valores propios[L,U] = lu (A) factorización LU[Q,R] = qr (A) factorización QR

Page 21: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Operadores relacionales con vectores y matrices

21

Cuando alguno de los operadores relacionales (<, >, <=, >=, == y ∼=) actúa entre dos matrices del mismo tamaño, el resultado es otra matriz de ese mismo tamaño conteniendo unos y ceros, según los resultados de cada comparación true o false, respectivamente.

Ejemplos

>> A=magic(3)A =

8 1 63 5 74 9 2

>> M=A>4M =

1 0 10 1 10 1 0

Page 22: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Operadores relacionales con vectores y matrices

22

Funcionesany(x) función vectorial; verifica si alguno de los elementos del vector x cumple una determinada condición.any(A) se aplica por separado a cada columna de la matriz A. El resultado es un vector de unos y cerosall(x) función vectorial; verifica si todos los elementos del vector x cumplen una condición.all(A) se aplica por separado a cada columna de la matriz A. El resultado es un vector de unos y cerosfind(x) busca índices correspondientes a elementos de vectores que cumplen una determinada condición. El resultado es un vector con los índices de los elementos que cumplen la condiciónfind(A) cuando esta función se aplica a una matriz la considera como un vector con una columna detrás de otra.

Page 23: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

23

Ejemplos

>> A=magic(3)A =

8 1 63 5 74 9 2

>> m=find(A>4)m =15678

Page 24: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Operadores relacionales con vectores y matrices

24

Funcionesisnan(A) verifica si hay valores NaN en A, devolviendo una matriz de unos y ceros del mismo tamaño que A.isinf(A) verifica si hay valores Inf en A, devolviendo una matriz de unos y ceros del mismo tamaño que A.isfinite(A) verifica si los valores de A son finitos.isempty(A) verifica si un vector o matriz está vacío o tiene tamaño nulo.issparse() verifica si una matriz es dispersa (sparse, es decir, con un gran número de elementos cero).

Ejemplos

>> A(m)=10*ones(size(m)) % sustituye los elementos que cumplen la condiciónA = anterior por valores de 10.

10 1 103 10 104 10 2

Page 25: Herramientas computacionales para la matemática - utm.mxvero0304/HCPM/6-Arreglos-Matrices.pdf · Matlab Arreglos: Matrices 2 Una matriz es un arreglo bidimensional, es una sucesión

MatlabArreglos: Matrices

25

Ejemplos

>> x=[1 2 3 4 0/0 6]Warning: Divide by zerox =

1 2 3 4 NaN 6>> i=find(isnan(x))i =5>> x(isnan(x))=[] % posibles formas de eliminarlox =

1 2 3 4 6>> x=x(~isnan(x));>> x=x(find(~isnan(x)));>> A(any(isnan(A)'), :)=[] % elimina las filas de A que contienen algún NaN