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$