Contamos con la contestación a este atascamiento, o por lo menos eso esperamos. Si sigues con inquietudes coméntalo, que para nosotros será un placer responderte
Solución:
SymPy obtuvo recientemente un nuevo solucionador de sistema lineal: linsolve
en sympy.solvers.solveset
puedes usarlo de la siguiente manera:
In [38]: from sympy import *
In [39]: from sympy.solvers.solveset import linsolve
In [40]: x, y, z = symbols('x, y, z')
Formulario de lista de ecuaciones:
In [41]: linsolve([x + y + z - 1, x + y + 2*z - 3 ], (x, y, z))
Out[41]: (-y - 1, y, 2)
Formulario de matriz aumentada:
In [59]: linsolve(Matrix(([1, 1, 1, 1], [1, 1, 2, 3])), (x, y, z))
Out[59]: (-y - 1, y, 2)
A*x = b Forma
In [59]: M = Matrix(((1, 1, 1, 1), (1, 1, 2, 3)))
In [60]: system = A, b = M[:, :-1], M[:, -1]
In [61]: linsolve(system, x, y, z)
Out[61]: (-y - 1, y, 2)
Nota: El orden de solución corresponde al orden de los símbolos dados.
Además de las excelentes respuestas brindadas por @AMiT Kumar y @Scott, SymPy 1.0 ha agregado aún más funcionalidades. Para el sistema de ecuaciones lineales indeterminado, probé a continuación y lo hice funcionar sin profundizar en sympy.solvers.solveset
. Dicho esto, ve allí si te lleva la curiosidad.
from sympy import *
x, y, z = symbols('x, y, z')
eq1 = x + y + z
eq2 = x + y + 2*z
solve([eq1-1, eq2-3], (x, y,z))
eso me da z: 2, x: -y - 1
. Una vez más, ¡gran paquete, desarrolladores de SymPy!
import sympy as sp
x, y, z = sp.symbols('x, y, z')
eq1 = sp.Eq(x + y + z, 1) # x + y + z = 1
eq2 = sp.Eq(x + y + 2 * z, 3) # x + y + 2z = 3
ans = sp.solve((eq1, eq2), (x, y, z))
esto es similar a la respuesta de @PaulDong con algunos cambios menores
- es una buena práctica acostumbrarse a no usar
import *
(numpy tiene muchas funciones similares) - definición de ecuaciones con
sp.Eq()
da como resultado un código más limpio más adelante
Sección de Reseñas y Valoraciones
Puedes sostener nuestro ensayo ejecutando un comentario y dejando una valoración te estamos agradecidos.