Saltar al contenido

Ecuaciones Lineales en Matlab

En la entrada del día de hoy vamos a aprender como solucionar o resolver Ecuaciones Lineales con MATLAB y para ello vamos a aprender a calcular Determinantes, Inversas y Rango de una Matriz dentro del software.

Antes de comenzar te hago la invitación para que accedas a Nuestro Curso Gratuito de MATLAB desde Cero.

Y que te sucríbas al canal de YouTUBE para que sigas aprendiendo más sobre la programación de este software.

Ecuaciones Lineales en Matlab

Matlab nos permite solucionar ecuaciones algebraicas lineales de una forma muy simple.

Si nos enfrentamos a un problema que sea lineal (o sea que no hayan operaciones entre las variables como: x^2,sin⁡(x), xy) donde únicamente las variables están multiplicadas por una constante: 2x, -5y, 4z, …

La forma típica de organizar este sistema de ecuaciones es dejar todas las variables a la izquierda y alinearlas verticalmente completando con ceros si es necesario y dejar cualquier posible constante a la derecha:

6𝑥−3𝑦+7𝑧=−8\\ 4𝑥+0𝑦+9𝑧=0\\−2𝑥+1𝑦+0𝑧=2

Este Sistema puede ser reescrito de forma matricial de la siguiente forma

\underset{A}{\underbrace{\begin{bmatrix} 6 & -3& 7\\ 4 & 0& 9\\ -2& 1& 0 \end{bmatrix}}} \underset{\vec{x}}{\underbrace{\begin{bmatrix} x\\ y\\ z \end{bmatrix}}}= \underset{\vec{b}}{\underbrace{\begin{bmatrix} -8\\ 0\\ 2 \end{bmatrix}}}

Lo que nos muestra que el sistema de ecuaciones lineales en su forma compacta puede ser expresada como:

A\vec{x}=\vec{b}

A partir de esta expresión matemática podremos resolver el sistema de ecuaciones lineales con Matlab facilmente, sin embargo va a depender de las características que tenga la matriz A.

Para estudiar la matriz A de el sistema de ecuaciones lineales anterior vamos a tener que saber como calcular determinantes, inversa de una matriz y el rango de una matriz en MATLAB.

Determinante de una Matriz en Matlab

El determinante de una matriz me permite verificar el número de soluciones de los sistemas de ecuaciones lineales.

En matlab se calcula con el siguiente comando

>> det(A)

Si el determinante de la matriz A es diferente de cero, indica que el espacio no se ha comprimido en una dimensión menor, por lo tanto podemos aplicar la inversa de la matriz y encontrar una solución única del sistema de ecuaciones lineales.

Rango de una matriz en MATLAB

El rango se define como la dimensión del conjunto imagen. En Matlab para calcular el rango se utiliza el siguiente comando:

>> rank(A)

Si el rango de la matriz es completo, es decir que da igual a la dimensión de la matriz, nos indica que sus columnas son linealmente independientes, por lo tanto el determinante de la matriz A es diferente de cero y se puede invertir la matriz.

Solución del Sistema de Ecuaciones Lineales en Matlab

Caso 1: det⁡(A)≠0

Si: det⁡(A)≠0, quiere decir que la matriz A no se comprime en su transformación lineal, por lo tanto es posible encontrar una solución única del problema representado por el sistema de ecuaciones.

A\vec{x}=\vec{b}
A^{-1} A\vec{x}=A^{-1} \vec{b}
\vec{x}=A^{-1} \vec{b}

Vemos que para obtener la solución del problema basta con invertir la matriz A y multiplicarla por el vector b.

Inversa de una Matriz en Matlab

Matlab nos ofrece diferentes formas de calcular la inversa de una matriz. Las cuales las podemos destacar a continuación:

  • >> x=inv(A)*b   %Forma menos recomendada.
  • >> x=A\b           %Forma recomendada
  • >> x=A^(-1)*b

La forma recomendada de encontrar la inversa de una matriz es usando la barra invertida «\» que aplica únicamente cuando la matriz se encuentra pre-multiplicando el vector b.

Si la matriz inversa está pos-multiplicando el vector

\vec{x}= \vec{b}A^{-1}

Debe ser aplicado la barra de división «/» que Matlab interpreta que se desea hacer la inversa de la matriz A.

  • >> x=b /A

No es necesario que la matriz de coeficientes A sea cuadrada. Si A tiene un tamaño de m por n, entonces, existen tres casos:

m = nSistema cuadrado. Busque una solución exacta.
m > nSistema sobredeterminado, con más ecuaciones que incógnitas. Encuentre una solución de mínimos cuadrados.
m < nSistema subdeterminado, con menos ecuaciones que incógnitas. Encuentre una solución básica con un máximo de m componentes distintos de cero.

Caso 2: det⁡(A)=0

Si: det⁡(A)=0, quiere decir que la matriz A en su transformación lineal comprime el espacio en una dimensión menor, por lo tanto NO podremos encontrar la Inversa. La solución NO existe, o NO es única.

Una matriz cuadrada A es singular si no tiene columnas linealmente independientes.

A modo de ejemplo, observemos la siguiente matriz

A=\begin{bmatrix} 1& 3& 7\\ -1& 4& 4\\ 1& 10& 18 \end{bmatrix}

Esta matriz tiene det(A)=0 y un rango de 2, rank(A)=2.

Para estos casos, la solución del sistema de ecuaciones lineales con Matlab va a depender de la ubicación del vector b.

\vec{x}=A^{-1} \vec{b}

Si A es singular y Ax = b tiene solución, se puede encontrar una solución particular que no es única.

>>   P = pinv(A)*b

pinv(A) es una pseudoinversa de A. Si Ax = b no tiene solución exacta, entonces pinv(A) devuelve una solución de mínimos cuadrados.

Solución Exacta:

Para b =[5;2;12], la ecuación Ax = b tiene una solución exacta

𝑥+3𝑦 +7𝑧=5\\ −𝑥+4𝑦 +4𝑧=2\\ 𝑥+10𝑦+18𝑧=12
\underset{A}{\underbrace{\begin{bmatrix} 1& 3& 7\\ -1& 4& 4\\ 1& 10& 18 \end{bmatrix}}} \underset{\vec{x}}{\underbrace{\begin{bmatrix} x\\ y\\ z \end{bmatrix}}}= \underset{\vec{b}}{\underbrace{\begin{bmatrix} 5\\ 2\\ 12 \end{bmatrix}}}

>>  P = pinv(A)*b

Para comprobar que pinv(A)*b es una solución exacta: A* pinv(A)*b

Solución de mínimos cuadrados:

si b = [3;6;0], la ecuación Ax = b NO tiene una solución exacta

𝑥+3𝑦 +7𝑧=3\\ −𝑥+4𝑦 +4𝑧=6\\ 𝑥+10𝑦+18𝑧=0
\underset{A}{\underbrace{\begin{bmatrix} 1& 3& 7\\ -1& 4& 4\\ 1& 10& 18 \end{bmatrix}}} \underset{\vec{x}}{\underbrace{\begin{bmatrix} x\\ y\\ z \end{bmatrix}}}= \underset{\vec{b}}{\underbrace{\begin{bmatrix} 3\\ 6\\ 0 \end{bmatrix}}}

>>  A*pinv(A)*b

no recupera el vector original b

Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:

👉 Invitar a Sergio a un Café ☕️

Que esten muy bien, nos vemos en la siguiente entrada.