SymPy - Löser

Da die Symbole = und == in Python als Zuweisungs- und Gleichheitsoperatoren definiert sind, können sie nicht zur Formulierung symbolischer Gleichungen verwendet werden. SymPy bietet die Funktion Eq () zum Erstellen einer Gleichung.

>>> from sympy import * 
>>> x,y=symbols('x y') 
>>> Eq(x,y)

Das obige Code-Snippet liefert eine Ausgabe, die dem folgenden Ausdruck entspricht -

x = y

Da x = y genau dann möglich ist, wenn xy = 0 ist, kann die obige Gleichung wie folgt geschrieben werden:

>>> Eq(x-y,0)

Das obige Code-Snippet liefert eine Ausgabe, die dem folgenden Ausdruck entspricht -

x − y = 0

Das Solver-Modul in SymPy bietet die Funktion soveset (), deren Prototyp wie folgt lautet:

solveset(equation, variable, domain)

Die Domain ist standardmäßig S.Complexes. Mit der Funktion solveset () können wir eine algebraische Gleichung wie folgt lösen:

>>> solveset(Eq(x**2-9,0), x)

Die folgende Ausgabe wird erhalten -

{−3, 3}

>>> solveset(Eq(x**2-3*x, -2),x)

Die folgende Ausgabe wird nach Ausführung des obigen Codeausschnitts erhalten -

{1,2}

Die Ausgabe von Solveset ist ein FiniteSet der Lösungen. Wenn es keine Lösungen gibt, wird ein EmptySet zurückgegeben

>>> solveset(exp(x),x)

Die folgende Ausgabe wird nach Ausführung des obigen Codeausschnitts erhalten -

$\varnothing$

Lineargleichung

Wir müssen die Funktion linsolve () verwenden, um lineare Gleichungen zu lösen.

Zum Beispiel sind die Gleichungen wie folgt:

xy = 4

x + y = 1

>>> from sympy import * 
>>> x,y=symbols('x y') 
>>> linsolve([Eq(x-y,4),Eq( x + y ,1) ], (x, y))

Die folgende Ausgabe wird nach Ausführung des obigen Codeausschnitts erhalten -

$\lbrace(\frac{5}{2},-\frac{3}{2})\rbrace$

Die Funktion linsolve () kann auch lineare Gleichungen lösen, die in Matrixform ausgedrückt werden.

>>> a,b=symbols('a b') 
>>> a=Matrix([[1,-1],[1,1]]) 
>>> b=Matrix([4,1]) 
>>> linsolve([a,b], (x,y))

Wir erhalten die folgende Ausgabe, wenn wir das obige Code-Snippet ausführen -

$\lbrace(\frac{5}{2},-\frac{3}{2})\rbrace$

Nichtlineare Gleichung

Zu diesem Zweck verwenden wir die Funktion nonlinsolve (). Gleichungen für dieses Beispiel -

a 2 + a = 0 ab = 0

>>> a,b=symbols('a b') 
>>> nonlinsolve([a**2 + a, a - b], [a, b])

Wir erhalten die folgende Ausgabe, wenn wir das obige Code-Snippet ausführen -

$\lbrace(-1, -1),(0,0)\rbrace$

Differentialgleichung

Erstellen Sie zunächst eine undefinierte Funktion, indem Sie cls = Function an die Symbolfunktion übergeben. Verwenden Sie dsolve, um Differentialgleichungen zu lösen.

>>> x=Symbol('x') 
>>> f=symbols('f', cls=Function) 
>>> f(x)

Die folgende Ausgabe wird nach Ausführung des obigen Codeausschnitts erhalten -

f(x)

Hier ist f (x) eine nicht bewertete Funktion. Seine Ableitung ist wie folgt -

>>> f(x).diff(x)

Das obige Code-Snippet liefert eine Ausgabe, die dem folgenden Ausdruck entspricht -

$\frac{d}{dx}f(x)$

Wir erstellen zuerst ein Gl. Objekt, das der folgenden Differentialgleichung entspricht

>>> eqn=Eq(f(x).diff(x)-f(x), sin(x)) 
>>> eqn

Das obige Code-Snippet liefert eine Ausgabe, die dem folgenden Ausdruck entspricht -

$-f(x) + \frac{d}{dx}f(x)= \sin(x)$

>>> dsolve(eqn, f(x))

Das obige Code-Snippet liefert eine Ausgabe, die dem folgenden Ausdruck entspricht -

$f(x)=(c^1-\frac{e^-xsin(x)}{2}-\frac{e^-xcos(x)}{2})e^x$