Indiesem Abschnitt wollen wir das Python-Modul SymPy vorstellen, welches uns ermglicht symbolische Berechnungen durchzufhren. Insbesondere werden wir lernen, wie wir mit mathematischen Ausdrcken arbeiten knnen, wie wir Funktionen differenzieren und integrieren, und wie wir (nicht)lineare Gleichungssysteme und Differentialgleichungen lsen.
Der Ausdruck g1 ist nur die Zahl 3.0 und g2 und g3 sind vom Typ sympy.core.mul.Mult, sind also Ausdrcke die aus der Multiplikation weiterer Ausdrcke hervorgegangen sind. Ein mathematischer Ausdruck wird schlielich in Form eines Binrbaums dargestellt. Die genaue Darstellung bekommen wir wie folgt:
SymPy stellt auch ein direktes Interface zu MatplotLib bereit. Der Unterschied zu den in Visualisierung mit Matplotlib gelernten Funktionen ist, dass wir hier nicht erst ein Gitter fr die x-Werte anlegen mssen. Dies geschieht in den plot-Funktionen von SymPy automatisch. Wir mssen lediglich die SymPy-Expression und gegebenenfalls zustzliche Funktionsparameter der sympy.plot-Funktion bergeben:
Dictionary ist auch eine Containerklasse, welche Key-Value-Paare abspeichert. Der Key (Schlssel) ist hier der Name der Variable und der Value deren Wert. Wir knnen auch mit einer for-Schleife ber ein Dictionary iterieren. Die lokale Variable a in folgendem Beispiel ist dabei lediglich der Schlssel. Den zugehrigen Wert bekommt man mit sols[a]:
Fr dieses System aus 2 Gleichungen und 3 Unbekannten hat der linsolve-Befehl eine Lsung ermittelt, die noch von \(x_3\) abhngt. Natrlich erwarten wir in diesem Beispiel unendlich viele Lsungen. Mit der subs-Methode knnen wir die freie Variable mit einem speziellen Wert substituieren:
Auch einfache Differentialgleichungen knnen mit SymPy gelst werden. Zunchst mssen wir dafr eine Differentialgleichung definieren. Dazu legen wir zunchst ein Objekt vom Typ Function an und definieren die Differentialgleichung als mathematischen Ausdruck. Die Funktion Derivative erlaubt es die Ableitungen der gesuchten Funktion einzuarbeiten:
Dass unsere Lsung von 2 beliebigen Konstanten C1 und C2 abhngt ist nicht verwunderlich, da wir keine Anfangsbedingungen fr unsere Differentialgleichung zweiter Art definiert haben. Wir knnen nun auch feste Werte fr die Konstanten whlen. Dazu definieren wir ein Dictionary und nutzen die Funktion subs (Substituiere):
Schauen wir uns nun noch an, wie wir Anfangswertprobleme, also Differentialgleichungen zusammen mit entsprechenden Anfangsbedingungen, lsen knnen. Ruft man mit sp.dsolve? den Hilfetext zur Funktion dsolve auf, stt man schnell auf den Parameter ics. Dieser soll ein Dictionary sein, welches alle Anfangs- und Randbedingungen beinhaltet. Dafr soll folgende Syntax genutzt werden:
gelst. Interessant ist auch die Ausgabe der Funktion sympy.classify_ode(...). SymPy analysiert die Differentialgleichung und wendet, abhngig von der Klassifikation der Gleichng, eine entsprechende Lsungsstrategie an:
3a8082e126