Saltar al contenido

¿Cómo puedo resolver el sistema de ecuaciones lineales en SymPy?

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.solvesetpuedes 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

  1. es una buena práctica acostumbrarse a no usar import * (numpy tiene muchas funciones similares)
  2. 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *