TP2: Matlab. Algebra lineal con MATLAB. En sistemas de ecuaciones lineales no muy grandes es muy fácil recurrir a su solución con MATLAB, Conviene aprender algunas de las funciones del manejo de matrices con esta herramienta. Esta práctica se orienta a usar las herramientas de MATLAB para resolver un sistema de ecuaciones lineales algebraicas (SEA), a calcular la inversa y el determinante de una matriz. Ya aprendimos a escribir matrices y vectores en MATLAB.
Operaciones básicas con Matrices ( Recordar que la norma es ponerles nombres en mayúsculas) Se escriben sus elementos por filas separados por comas o espacios en blanco. Para cambiar de fila se escribe un punto y coma (;) , se encierra todo entre corchetes. Escribir los siguientes comandos: A = [ 1 2 ; 3 1] A= 1 2 3 1 Transpuesta de una matriz La matriz transpuesta de A se obtiene escribiendo A con un apóstrofe B = A' % CP Matriz transpuesta apóstrofe B= 1 3 2 1
C=Determinante de una matriz Se calcula usando el comando det() c = det(A) % CP Calcula el determinante de A c= -5 Inversa de una matriz AINV = inv(A) % CP Devuelve AINV o sea la inversa de A. (AINV es un nombre elegido por nosotros.) AINV = -0.2000 0.4000 0.6000 -0.2000 Verificación: Recordemos que A por la inversa de A da la matriz dentidad C = A*AINV C= 1 0 0 1 o
% CP Verificación: la multiplicación por la inversa debe dar la matriz identidad
C = AINV*A
% CP Verificación: la propiedad conmutativa del producto por la inversa
ASolución de un SEA con MATLAB. Recordemos que: 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: Si tenemos la matriz: 1 A= 1 1
2 1 0
3 0 2
>> A = [ 1 2 3 ; 1 1 0 ; 1 0 2 ]
%CP (CP: Cortar y Pegar el la Command Windows de Matlab)
Obtenemos A= 1 2 3 1 1 0 1 0 2 Escribir el vector columna b (o términos independientes del sistema) >> b = [ 10 1 7 ]’ % CP el apóstrofe es para que sea un vector columna o [10 ; 1 ; 7] b= 10 1
por los punto y coma
7 X =Entonces el sistema dado por
A *x = b
1 1 1
2 1 0
3 0 * 2 -1
Sabemos que:
x1 x2 x3 -1
=
A *Ax=A *b
10 1 7
Debemos calcular x1 x2 x3
-1
-1
como A *A = I por lo tanto: x = A * b
-1
-1
Entonces 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 % CP x= 1.0000 0.0000 3.0000
Obtenemos así los valores de x1 = 0 x2 = 0 x3= 3
Verificación: >> A * x ans = 10 1 7
% CP Que son los valores del vector b.
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 % CP (probar esta forma de calcular las raíces).
Con este operador el comando >> A \ A
Da como resultado una matriz unidad de 3x3.