Comunicación Técnica
Comunicación Electrónica Electróni ca
Algebra lineal con Matlab
Algebra lineal con MA M ATLAB. Para sistemas de ecuaciones lineales no muy grandes es muy fácil recurrir a su solución con MATLAB, MATLAB, entonces entonces conviene conviene aprender aprender algunas algunas de las operaciones operaciones y funciones funciones del manejo manejo de matrices y vectores con esta herramienta. herramienta. Esta práctica se va a orientar a usar las herramientas de MATLAB para: Resolver un sistema de ecuaciones lineales algebraicas algebraicas (SEA). • •
Calcular la inversa y el determinante de una matriz.
Ya aprendimos a escribir matrices y vectores en MATLAB. Así la matriz: 1 A= 1 1
2 1 0
3 0 2
Se escribe como >> A = [ 1 2 3 ; 1 1 0 ; 1 0 2 ] o >> A= [ 1 ,2 ,3 ; 1 ,1, 0 ; 1, 0 ,2 ] A= 1 2 3 1 1 0 1 0 2 Y en el caso de un vector: x = [ 1 2 3 ] este es un vector fila.
(1)
Transpuesta de una matriz. T Recordemos que B es la transpuesta de A (B = A ). donde b j, i = a i,j En MATLAB la transpuesta se evalúa con el operador apóstrofe ‘. >> B = A’ B= 1 1 1 2 1 0 3 0 2 En un vector fila como como x su transpuesto es el el vector columna: columna: >> x’ ans = 1 2 3 Multiplicación de matrices. Recordemos que para multiplicar las matrices A*B , el número de columnas de A debe ser igual al de filas B. Y que en general el producto de matrices no es conmutativo. Como a nosotros nos interesa para el cálculo de un SEA. b = A*x' b = 14 3 7
1 de 3
Comunicación Técnica
Comunicación Electrónica Electróni ca
Algebra lineal con Matlab
Matriz inversa. Recordemos que la inversa de una matriz A es B tal que : A*B = I o A*B = 1 I es la matriz identidad -1
Es decir que A por su inversa B ( o A ) es la matriz identidad. La función inv() calcula la inversa de una matriz >> B= inv(A) B= -0.4000 0.8000 0.6000 0.4000 0.2000 -0.6000 0.2000 -0.4000 0.2000
>> A*B 1.0000 0.0000 0.0000
0.0000 1.0000 0.0000
0.0000 0.0000 1.0000
0.0000 1.0000 0.0000
0.0000 0.0000 1.0000
o >> B*A 1.0000 0.0000 0.0000
Propiedad conmutativa de la multiplicación por la inversa.
Solución de un SEA con MATLAB. Al multiplicar la matriz A por el vector x transpuesto (A * x’) generamos un SEA: A. x = b donde b es el vector de términos independientes independientes de este sistema no homogéneo. Sabemos que para hallar la soluciones x 1 , x2 y x3 de este sistema, se multiplica la inversa por el vector b vector b, esto se puede deducir pues si multiplicamos el sistema por la inversa de A: -1 -1 -1 A *Ax=A *b como A *A = I por lo tanto: -1
-1
x = A * b en MATLAB MATLAB se calcula A con la función inv(A), la matriz A no debe se singular. x = inv(A) * b x= 1.0000 2.0000 3.0000
Obtenemos así los valores de x, que coinciden con los establecidos en (1).
Nota: Internamente en MATLAB es más eficiente la operación ‘premultiplicación por la inversa’ que se representa representa por por el operador operador \ \ (barra invertida). Así la solución del sistema Ax =b se obtiene con el comando: >> x = A \ b Con este operador el comando >> A \ A Da como resultado una matriz unidad de 3x3. Determinante. Determinante Determinant e de A = a11 a22 a33 + a12 a23 a31 + a13 a21 a32 - a11 a23 a32 - a12 a21 a33 - a13 a22 a31 Para calcular el determinante de una matriz en MATLAB se usa la función det(A). >> det(A) La función det() calcula el determinante de una matriz ans = -5 La matriz debe ser cuadrada y no singular. >> S = [ 1 2 3 ; 1 1 0 ; 2 4 6 ] S= 1 2 3 1 1 0 2 4 6 Esta fila es la fila 1 * 2.00 >> det(S) ans = 0 Al dar cero el determinante determinante no podremos hallar la inversa.
Recordemos que la inversa es: -1
A =
T
1 * [ Adj (A)] det(A)
2 de 3
Comunicación Técnica
Comunicación Electrónica Electróni ca
Algebra lineal con Matlab
Funciones elementales para matrices y vectores Las presentaremos presentaremos con ejemplos. Los nombres nombres de los vectores , matrices y usados a la izquierda izquierda del signo igual, igual, o como argumentos argumentos (v , ym , posimax, num_elem num_elem , etc.) son de libre libre elección. elección. Funciones para vectores. Dado el vector: v:= [ 7 ; 3 ; 6 ; 4 ; 11 ; 9 ] length(v) ans = 6
Devuelve el tamaño del vector (cantidad de elementos)
min(v) ans = 3
Busca el elemento con el valor mínimo
max(v) ans = 11
Busca el elemento con el valor máximo
[ymin,posimin] =min(y) ym =3 posimin = 2
Busca el mínimo (ymin) y su posición dentro del vector (posimin)
[ymax,posimax] =max(y) ymax= 11 posimax = 5
Busca el máximo (ymax) y su posición dentro del vector (posimax)
sum(v) ans = 40
Calcula la sumatoria de los elementos del vector
mean(v) ans = 6.6667
Calcula el promedio de los elementos del vector
[vord , posi] = sort(v) vord = posi =
3 2
4 4
6 3
7 1
Ordena el vector y devuelve un vector (vord) ordenado y otro vector (posi) con la posición de cada elemento en el original. 9 11 6 5
Funciones para matrices M = magic(3) 8 1 6 3 5 7 4 9 2
Genera una matriz matriz al azar de nxn elementos en en este caso 3x3.
IDEN = eye(3) 1 0 0 0 1 0 0 0 1
Genera una matriz identidad de nxn (en este caso 3x3)
[m,n] = size(M) m=3 n = 3
Devuelve la cantidad de filas (m) y columnas (n) de la matriz M
nfilas = size(M,1) Devuelve la cantidad de filas o sea nfilas=3 ncolum = size(M,2) Devuelve la cantidad de columnas o sea ncolum=3 º size (vector,1) se puede aplicar también para saber la cantidad de elementos de un vector: num_ele = size(v,1) o sea num_ele = 6
3 de 3