Solución de Sistemas Sobredeterminados con Pseudo-Inversa y Python
Clase 14 de 18 • Curso de Álgebra Lineal Aplicada para Machine Learning
Resumen
¿Qué es un sistema de ecuaciones y cómo se resuelve?
Un sistema de ecuaciones es un conjunto de ecuaciones con varias incógnitas. Este sistema puede tener cero, una o infinitas soluciones. En situaciones donde el sistema tiene una solución única, esto indica que existe una matriz inversa y que la matriz es cuadrada con vectores linealmente independientes. Cuando buscamos una solución X tal que minimice una norma específica, podemos recurrir a un método llamado pseudo inversa.
¿Cómo aplicar la pseudo inversa para resolver un sistema?
La pseudo inversa es útil para encontrar una solución X que minimice la norma de a por X menos B en un sistema de ecuaciones lineales. Esto es importante en sistemas sobre determinados, donde hay más ecuaciones que incógnitas.
Visualización inicial con Python
Para abordar este problema con código, se pueden seguir estos pasos:
-
Configuración de entorno y librerías: Inicialmente, se importa
numpy
comonp
y se utilizamatplotlib
para visualizar gráficamente.import numpy as np import matplotlib.pyplot as plt
-
Definición del dominio: Se establece un rango de valores de X para evaluar las ecuaciones del sistema:
x = np.linspace(-5, 5, 1000)
-
Definición de funciones: Se crean las funciones correspondientes a las tres ecuaciones del sistema:
y1 = -4 * x + 3 y2 = 2 * x + 5 y3 = -3 * x + 1
Graficación del sistema
Las ecuaciones se grafican para visualizar su intersección:
plt.plot(x, y1, label='y1 = -4x + 3')
plt.plot(x, y2, label='y2 = 2x + 5')
plt.plot(x, y3, label='y3 = -3x + 1')
plt.xlim(-2, 2.5)
plt.ylim(-6, 6)
plt.legend()
plt.show()
En el gráfico, es evidente que las rectas definidas por estas ecuaciones no cruzan en un único punto común.
¿Cómo usar la pseudo inversa para encontrar el punto óptimo?
Para resolver este problema gráficamente y encontrar el punto que minimice la norma dos, seguimos estos pasos:
-
Definir la matriz y el vector de soluciones:
La matriz A se construye con los coeficientes de las ecuaciones:
A = np.array([[4, 1], [-2, 1], [3, 1]]) b = np.array([3, 5, 1]) # Vector de soluciones
-
Calcular la pseudo inversa:
Utilizamos
numpy.linalg.pinv
para calcularla:A_pseudo_inv = np.linalg.pinv(A)
-
Encontrar la solución X:
Multiplicamos la pseudo inversa de A con el vector b:
X = A_pseudo_inv @ b
Este cálculo nos proporciona una solución que podemos interpretar gráficamente.
Interpretación gráfica y análisis
Al graficar nuevamente y añadir el punto encontrado:
plt.plot(x, y1, label='y1 = -4x + 3')
plt.plot(x, y2, label='y2 = 2x + 5')
plt.plot(x, y3, label='y3 = -3x + 1')
plt.scatter(X[0], X[1], color='red', zorder=5) # Punto solución
plt.xlim(-2, 2.5)
plt.ylim(-6, 6)
plt.legend()
plt.show()
El punto solución no siempre se encuentra en el centro del "triángulo" formado por las ecuaciones debido al diferente peso que cada una ejerce sobre él, como una suerte de centro de gravedad.
La pseudo inversa proporciona una herramienta efectiva para manejar sistemas sobre determinados, ayudándonos a encontrar soluciones óptimas que norman la minimización. Siguiendo este enfoque, podemos comprender y resolver problemas complejos en la matemática aplicada. ¡Sigue adelante y continúa aprendiendo!