Comunicación Técnica
Comunicación Electrónica
Algebra lineal con Matlab
Algebra lineal con MATLAB. Para sistemas de ecuaciones lineales no muy grandes es muy fácil recurrir a su solución con MATLAB, entonces conviene aprender algunas de las operaciones y funciones del manejo de matrices y vectores con esta herramienta. Esta práctica se va a orientar a usar las herramientas de MATLAB para: • Resolver un sistema de ecuaciones lineales 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 x su transpuesto es el vector 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
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. >> B= inv(A) La función inv() calcula la inversa de una matriz 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 de este sistema no homogéneo. Sabemos que para hallar la soluciones x1 , x2 y x3 de este sistema, se multiplica la inversa por el 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 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 por el 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 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 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
Algebra lineal con Matlab
Funciones elementales para matrices y vectores Las presentaremos con ejemplos. Los nombres de los vectores , matrices y usados a la izquierda del signo igual, o como argumentos (v , ym , posimax, num_elem , etc.) son de libre 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 al azar de nxn elementos 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