SymPy - Solucionadores
Dado que los símbolos = y == se definen como operadores de asignación e igualdad en Python, no se pueden usar para formular ecuaciones simbólicas. SymPy proporciona la función Eq () para configurar una ecuación.
>>> from sympy import *
>>> x,y=symbols('x y')
>>> Eq(x,y)
El fragmento de código anterior proporciona una salida equivalente a la siguiente expresión:
x = y
Dado que x = y es posible si y solo si xy = 0, la ecuación anterior se puede escribir como -
>>> Eq(x-y,0)
El fragmento de código anterior proporciona una salida equivalente a la siguiente expresión:
x − y = 0
El módulo de resolución en SymPy proporciona la función soveset () cuyo prototipo es el siguiente:
solveset(equation, variable, domain)
El dominio es por defecto S.Complexes. Usando la función solveset (), podemos resolver una ecuación algebraica de la siguiente manera:
>>> solveset(Eq(x**2-9,0), x)
Se obtiene el siguiente resultado:
{−3, 3}
>>> solveset(Eq(x**2-3*x, -2),x)
El siguiente resultado se obtiene después de ejecutar el fragmento de código anterior:
{1,2}
La salida de solveset es un FiniteSet de las soluciones. Si no hay soluciones, se devuelve un EmptySet
>>> solveset(exp(x),x)
El siguiente resultado se obtiene después de ejecutar el fragmento de código anterior:
$\varnothing$
Ecuación lineal
Tenemos que usar la función linsolve () para resolver ecuaciones lineales.
Por ejemplo, las ecuaciones son las siguientes:
xy = 4
x + y = 1
>>> from sympy import *
>>> x,y=symbols('x y')
>>> linsolve([Eq(x-y,4),Eq( x + y ,1) ], (x, y))
El siguiente resultado se obtiene después de ejecutar el fragmento de código anterior:
$\lbrace(\frac{5}{2},-\frac{3}{2})\rbrace$
La función linsolve () también puede resolver ecuaciones lineales expresadas en forma de matriz.
>>> a,b=symbols('a b')
>>> a=Matrix([[1,-1],[1,1]])
>>> b=Matrix([4,1])
>>> linsolve([a,b], (x,y))
Obtenemos el siguiente resultado si ejecutamos el fragmento de código anterior:
$\lbrace(\frac{5}{2},-\frac{3}{2})\rbrace$
Ecuación no lineal
Para este propósito, usamos la función nonlinsolve (). Ecuaciones para este ejemplo:
a 2 + a = 0 ab = 0
>>> a,b=symbols('a b')
>>> nonlinsolve([a**2 + a, a - b], [a, b])
Obtenemos el siguiente resultado si ejecutamos el fragmento de código anterior:
$\lbrace(-1, -1),(0,0)\rbrace$
ecuación diferencial
Primero, cree una función indefinida pasando cls = Function a la función de símbolos. Para resolver ecuaciones diferenciales, use dsolve.
>>> x=Symbol('x')
>>> f=symbols('f', cls=Function)
>>> f(x)
El siguiente resultado se obtiene después de ejecutar el fragmento de código anterior:
f(x)
Aquí f (x) es una función no evaluada. Su derivada es la siguiente:
>>> f(x).diff(x)
El fragmento de código anterior proporciona una salida equivalente a la siguiente expresión:
$\frac{d}{dx}f(x)$
Primero creamos el objeto Eq correspondiente a la siguiente ecuación diferencial
>>> eqn=Eq(f(x).diff(x)-f(x), sin(x))
>>> eqn
El fragmento de código anterior proporciona una salida equivalente a la siguiente expresión:
$-f(x) + \frac{d}{dx}f(x)= \sin(x)$
>>> dsolve(eqn, f(x))
El fragmento de código anterior proporciona una salida equivalente a la siguiente expresión:
$f(x)=(c^1-\frac{e^-xsin(x)}{2}-\frac{e^-xcos(x)}{2})e^x$