Un problema de cálculo que se puede resolver fácilmente con Python son los sistemas de ecuaciones lineales. Gracias a las matrices de numpy se puede conseguir el resultado poco más de un par de líneas. Por ejemplo, para resolver un sistema de ecuaciones lineales con numpy solamente se ha de utilizar el siguiente bloque de código:
import numpy as np A = np.matrix([[2, 3],[1, -2]]) b = np.matrix([[8],[-10]]) x = (A**-1)*b
Al ejecutar el código se puede comprobar que en la variable x se ha almacenado la matriz [[-2], [4]] que se corresponde con la solución del problema:
Un sistema de n ecuaciones con n incógnitas se puede escribir de la siguiente forma:
\begin{matrix} a_{11} x_1 + a_{12} x_2 + \ldots + a_{1n} x_n &= b_1 \\ a_{21} x_1 + a_{22} x_2 + \ldots + a_{2n} x_n &= b_2 \\ \ldots \\ a_{n1} x_1 + a_{n2} x_2 + \ldots + a_{nn} x_n &= b_n \end{matrix}El sistema también se puede escribir en forma matricial de la forma:
\begin{bmatrix} a_{11} & a_{12} & \ldots & a_{1n} \\ a_{21} & a_{22} & \ldots & a_{2n} \\ \ldots & \ldots & \ldots & \ldots \\ a_{n1} & a_{n2} & \ldots & a_{nn} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ \ldots \\ x_n \end{bmatrix} = \begin{bmatrix} b_1 \\ b_2 \\ \ldots \\ b_n \end{bmatrix}Lo que se puede reescribir de forma compacta utilizando \boldsymbol{A}\boldsymbol{x} = \boldsymbol{b} donde \boldsymbol{A} es una matriz de dimensión n \times n y \boldsymbol{x} y \boldsymbol{b} son dos vectores columna de longitud n. En esta ecuación se ha para despejar el valor de \boldsymbol{x}. Para ello, asumiendo que la matriz \boldsymbol{A} es regular se puede multiplicar la expresión por la inversa de \boldsymbol{A}, \boldsymbol{A^{-1}}
En este caso \boldsymbol{A^{-1}} \boldsymbol{A}A es la matriz identidad y, por lo tanto, se puede escribir la solución del sistema como:
\boldsymbol{x} = \boldsymbol{A^{-1}} \boldsymbol{b}Esta operación es lo que se ha escrito anteriormente en el código Python. La matriz inversa de A se puede obtener mediante A**-1 y al multiplicar esta matriz por b se obtiene el resultado buscado.
Para poder implementar este método se ha de verificar que la matriz A sea invertible. En caso de que no sea así al intentar invertirá Python generar un error. Cuando se trabaja de forma interactiva con Python esto no es problema mayor, pero si cuando el procedimiento se implementa en un programa. Para asegurar que se puede resolver el problema simplemente se ha de verificar que el determinante de la matriz se distinto de cero, mediante la utilización del método det().
if np.linalg.det(A) == 0:
x = None
print("No se puede resolver")
else:
x = (A**-1)*b Este trozo de código devuelve la solución cuando es posible y None en caso contrario.
En esta entrada se ha visto cómo resolver un sistema de ecuaciones con numpy de forma rápida. Esta es una tarea que puede ser bastante habitual y con este truco se puede aumentar la productividad a la hora de realizar cálculos numéricos.
Imágenes: Unsplash (Antoine Dautry)
Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…
En el octavo aniversario de Analytics Lane seguimos ampliando nuestro laboratorio de aplicaciones interactivas y,…
Hoy, 2 de mayo de 2026, Analytics Lane cumple exactamente ocho años. Todo empezó con…
La nueva herramienta permite calcular la rentabilidad real de inversiones con múltiples aportaciones, retiradas y…
Analytics Lane continúa ampliando su laboratorio de utilidades para desarrolladores y analistas de datos con…
Analytics Lane continúa ampliando su laboratorio de herramientas para desarrolladores con el lanzamiento del Formateador…
This website uses cookies.