una - ¿Hay un módulo de Python para resolver ecuaciones lineales?
transpuesta de una matriz en python numpy (4)
Puede usar el método de mínimos cuadrados en python para resolver el sistema de ecuaciones, por ejemplo, para resolver ecuaciones 3x + 4y = 7 y 5x + 6y = 8
>>> import numpy
>>> a=[[3,4],[5,6]]
>>> b=[7,8]
>>> numpy.linalg.lstsq(a,b)
(array([-5. , 5.5]), array([], dtype=float64), 2, array([ 9.27110906, 0.21572392]))
Quiero resolver una ecuación lineal con tres o más variables. ¿Hay una buena biblioteca en Python para hacerlo?
Sí, el muy popular paquete http://numpy.scipy.org/ tiene una función para hacer esto . Su ejemplo:
Resuelve el sistema de ecuaciones
3 * x0 + x1 = 9
yx0 + 2 * x1 = 8
:
>>> import numpy as np >>> a = np.array([[3,1], [1,2]]) >>> b = np.array([9,8]) >>> x = np.linalg.solve(a, b) >>> x array([ 2., 3.])
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.linalg.solve.html
Usando el ejemplo de @ Jeremy:
from sympy import *
x0, x1 = symbols([''x0'', ''x1''])
sol = solve([3 * x0 + x1 - 9, x0 + 2 * x1 - 8], [x0, x1])
print(sol)
salida:
{x0: 2, x1: 3}
Usando @ 004 ejemplo con notación ligeramente diferente:
from sympy import *
x, y = symbols([''x'', ''y''])
system = [
Eq(3*x + 4*y, 7),
Eq(5*x + 6*y, 8)
]
soln = solve(system, [x, y])
print(soln)
{x: -5, y: 11/2}
Nota: A veces uno puede ver la siguiente notación para símbolos: x, y = symbols(''x, y'')
, que parece ser menos pitónico.
Ver http://sympy.org/ y http://numpy.scipy.org/ .
Específicamente, http://docs.scipy.org/doc/numpy/reference/routines.linalg.html
Y http://docs.sympy.org/0.7.0/tutorial.html#algebra , docs.sympy.org/dev/modules/solvers/solvers.html
Editar: Enlace de solucionador agregado del comentario.