Sistemas de ecuaciones lineales con MATLAB
Determinante
Un determinante es un número asociado a una matriz cuadrada. Para una matriz cuadrada de dimensión 2×2
El determinante de una matriz m×m se desarrolla en términos de una combinación de determinates de matrices de dimensión m-1×m-1 y así, sucesivamente, hasta llegar a los determinantes de matrices 2×2.
Por ejemplo, el determinante de una matriz 3×3 es

El determinante se calcula mediante la siguiente fórmula
Donde M1j es una submatriz obtenida eliminando la fila 1 y la columna j de la matriz A
En la página titulada Matrices hemos visto como se accede a los elementos de una matriz
Tomemos la matriz cuadrada A de dimensión 4×4, la submatriz M12 que se obtiene eliminando la primera fila y la segunda columna es
>> A=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16] A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 >> M12=[A(2:4,1),A(2:4,3:4)] M12 = 5 7 8 9 11 12 13 15 16
Definimos la función determinante que toma la matriz A de dimensión n×n y produce matrices M1j de dimensión n-1×n-1 y calcula el determinante de acuerdo con la fórmula anterior, de forma recursiva
function d = determinante(A) n=length(A); if n==1; d=A(1,1); else d=0; sgn=1; for j=1:n M1j=[A(2:n,1:j-1) A(2:n,j+1:n)]; d=d+sgn*A(1,j)*determinante(M1j); sgn=-sgn; end end end
Calculamos el determinante de esta matriz utilizando la función determinante
>> A=[-1 0 3; 2 -1 0; 3 1 -2] A = -1 0 3 2 -1 0 3 1 -2 >> determinante(A) ans = 13
En MATLAB la función det(A) calcula el determinante de la matriz cuadrada A.
>> det(A) ans = 13
Matriz inversa
Se denomina matriz identidad I a aquella matriz cuadrada de dimensiones m×m en la cual los elementos de la diagonal valen 1 y el resto de los elementos vale cero. MATLAB dispone de la función eye(m) para crear una matriz cuadrada de dimensión m con los elementos de la diagonal principal unos y el resto ceros.
El producto de la matriz identidad I por otra matriz A nos da la matriz A
Si la matriz A es cuadrada, se obtiene el mismo resultado efectuando el producto A*I o I*A
Si A es una matriz cuadrada, B es su matriz inversa si el producto A*B=B*A=I
En MATLAB se puede obtener la matriz inversa de A elevando A a la potencia -1, A-1 o bien, mediante la función inv(A)
>> A=[-1 0 3; 2 -1 0; 3 1 -2] A = -1 0 3 2 -1 0 3 1 -2 >> B=inv(A) B = 0.1538 0.2308 0.2308 0.3077 -0.5385 0.4615 0.3846 0.0769 0.0769 >> A*B ans = 1.0000 0 0 -0.0000 1.0000 -0.0000 0 -0.0000 1.0000
Rango de una matriz
El rango de una matriz es el máximo número de filas linealmente independientes. La función rank calcula el rango de una matriz. Sea la matriz A
>> A=[0 -1 2 1; 1 -1 0 -1; 3 1 2 0; 2 -3 2 -1]; >> rank(A) ans = 3
Como podemos apreciar la fila cuatro es combinación lineal de la fila 1 y la fila 2:. a4j=a1j+2·a2j, j=1...4
División por la izquierda y por la derecha
La división por la izquierda se utiliza para resolver la ecuación AX=B. En esta ecuación X es el vector columna de las incógnitas, B es el vector columna de los términos independientes y A es una matriz cuadrada.
A-1AX=IX=X
De modo que
X=A-1B
En MATLAB esta última expresión se escribe utilizando el operador división por la izquierda
X=A\B
La división por la derecha se utiliza para resolver la ecuación XC=D. En esta ecuación X y D son vectores fila y C es una matriz cuadrada.
XCC-1=DC-1
X=DC-1 o bien, X=D/C (división por la derecha)
Sistema de ecuaciones lineales
Sistema de n ecuaciones con n incógnitas. Regla de Cramer
Consideremos un sistema de n ecuaciones con n incógnitas cuya solución es única.
Llamemos A a la matriz de los coeficientes, cuyo determinate d es distinto de cero
La regla de Cramer nos dice que cada una de las incógnitas xj se puede obtener a partir del determinante de la matriz en la que se ha sustituido la columna j de la matriz A por el vector columna de los términos independientes b.
Sea el sistema
A=[3 -1 0; -2 1 1; 2 -1 4]; b=[5;0;15]; n=length(b); d=det(A); x=zeros(n,1); for i=1:n Ab=[A(:,1:i-1),b,A(:,i+1:n)]; x(i)=det(Ab)/d; end disp('Solución') disp(x);
Solución 2.0000 1.0000 3.0000
Sistema de m ecuaciones con n incógnitas
Sea el sistema
que podemos escribir Ax=b, donde A es una matriz de dimensión m×n, y x y b son dos vectores columna de longitudes n y m respectivamente. Tenemos un sistema de m ecuaciones con n incógnitas.
- El sistema tiene solución si y solo si el rango de la matriz A es igual al rango de la matriz ampliada A|b. Sistema compatible.
- Si el rango es igual al número n de incógnitas el sistema tiene una solución única. Sistema compatible determinado
- Si el rango es menor que el número n de incógnitas entonces hay un número infinito de soluciones. Sistema compatible indeterminado.
Vamos a ver algunos ejemplos:
1.-Sea el sistema de tres ecuaciones con dos incógnitas
En forma matricial se escribe
La matriz A y la matriz ampliada A|b son respectivamente
>> A=[2 1; 2 -1; 1 -2]; >> b=[3;0;4]; >> Ab=[A b] Ab = 2 1 3 2 -1 0 1 -2 4 >> rank(A) ans = 2 >> rank(Ab) ans = 3
El sistema no tiene solución (primer caso). Cada una de las ecuaciones del sistema representa una recta, identificamos x1 con x y x2 con y. En la figura, vemos la representación gráfica de las rectas: y=3-2x, y=2x, y=x/2-2; que como vemos no se cortan en un punto.
line([-5,5],[13,-7]) line([-5,5],[-10,10]) line([-5,5],[-9/2,1/2]) xlabel('x') ylabel('y') title('No tiene solución')
2.-Sea el sistema de tres ecuaciones con dos incógnitas
>> A=[2 1; 4 2; 6 3]; >> b=[3;6;9]; >> Ab=[A b]; >> rank(A) ans = 1 >> rank(Ab) ans = 1
El sistema tiene solución, pero como el rango es menor que el número de incógnitas hay un número infinito de soluciones (tercer caso).
Tenemos tres ecuaciones iguales, la segunda es igual a la primera multiplicada por dos y la tercera es igual a la primera multiplicada por tres. En la figura, se representa la recta y=3-2x, que es la solución del sistema de ecuaciones.
line([-5,5],[13,-7]) xlabel('x') ylabel('y') title('Infinitas soluciones')
3.-Sea el sistema de tres ecuaciones con dos incógnitas y su representación matricial
>> A=[2 1; 2 -1; 1 -2]; >> b=[3;5;4]; >> Ab=[A b]; >> rank(A) ans = 2 >> rank(Ab) ans = 2
El sistema tiene solución única ya que el rango es igual al número de incógnitas (segundo caso).
>> X=A\b X = 2.0000 -1.0000
En la figura vemos la representación gráfica de las rectas: y=3-2x, y=2x-5, y=x/2-2; que como vemos se cortan en un el punto x=2, y=-1.
line([-5,5],[13,-7]) line([-5,5],[-15,5]) line([-5,5],[-9/2,1/2]) xlabel('x') ylabel('y') title('Solución única')
División por la izquierda \
Vamos a practicar la división por la izquierda \ resolviendo el sistema de tres ecuaciones con tres incógnitas:
>> A=[3 -1 0; -2 1 1; 2 -1 4]; >> b=[5;0;15]; >> Ab=[A b]; >> rank(A) ans = 3 >> rank(Ab) ans = 3 >> A\b ans = 2.0000 1.0000 3.0000 >> inv(A)*b ans = 2.0000 1.0000 3.0000
La función rref
Esta función nos puede ser útil para resolver sistemas de ecuaciones.
- La matriz ampliada Ab del sistema de tres ecuaciones con tres incógnitas del apartado anterior es
>> A=[3 -1 0; -2 1 1; 2 -1 4]; >> b=[5;0;15]; >> Ab=[A b]; >> R=rref(Ab) R = 1 0 0 2 0 1 0 1 0 0 1 3
Pasamos la matriz Ab a la función rref de MATLAB y obtenemos la matriz ampliada R del sistema equivalente de ecuaciones
- Sea ahora, el sistema de tres ecuaciones con tres incógnitas siguiente:
Creamos la matriz A de los coeficientes y la matriz ampliada Ab
>> A=[1 1 1;1 0 -2;2 1 -1]; >> b=[-6;4;18]; >> Ab=[A b]; >> R=rref(Ab) R = 1 0 -2 0 0 1 3 0 0 0 0 1
El sistema equivalente es
Se trata de un sistema incompatible, tal como podemos comprobar calculando el rango de la matriz A y de su ampliada Ab
>> rank(A) ans = 2 >> rank(Ab) ans = 3
- Finalmente, sea el sistema
Creamos la matriz A de los coeficientes y la matriz ampliada Ab
>> A=[1 1 1; 1 0 -2;2 1 -1]; >> b=[6;4;10]; >> Ab=[A b]; >> rref(Ab) ans = 1 0 -2 4 0 1 3 2 0 0 0 0
La última fila 0x1+0x2+0x3=0 se verifica para cualquier valor de x1, x2 y x3
El sistema equivalente es
Una solución sería por ejemplo, x1=4, x2=2 y x3=0.
>> rank(A) ans = 2 >> rank(Ab) ans = 2
El sistema es compatible e indeterminado.