SymPy ist eine Python-Bibliothek für symbolisch-mathematische Berechnungen. Die Computeralgebra-Funktionen werden angeboten als eigenständiges Programm Bibliothek für andere Anwendungen Webservice SymPy LiveSymPy Live oder SymPy GammaSymPy Gamma
SymPy ermöglicht Berechnungen und Darstellungen im Rahmen von einfacher symbolischer Arithmetik bis hin zu Differential- und Integralrechnung sowie Algebra, diskreter Mathematik und Quantenphysik. Die Ergebnisse werden auf Wunsch in der Textsatzsystemsprache TeX ausgegeben.
SymPy ist freie Software und steht unter der neuen BSD-Lizenz. Die führenden Entwickler sind Ondřej Čertík und Aaron Meurer.
Die SymPy-Bibliothek besteht aus einem Basissystem, das durch optionale Module erweitert werden kann. Das Basissystem, auch als Core oder Kern bezeichnet, umfasst rund 260.000 Zeilen Code. Davon sind mehr als 100.000 Zeilen für umfangreiche Selbsttests vorgesehen.
Fähigkeiten SymPy umfasst zahlreiche mathematische Funktionen. Die nachfolgende Übersicht zeigt die grundlegende Fähigkeit des Basissystems sowie die Möglichkeit der modularen Erweiterungen.
Basissystem Grundrechenarten: Addition, Subtraktion, Multiplikation, Division Vereinfachung Erweiterung Funktionen: u. a. Trigonometrie, Hyperbolische Geometrie, Exponentialfunktion, Wurzelberechnungen, Logarithmen, Absolute Werte, Kugelflächenfunktionen, Fakultäten und Gammafunktionen, Zeta-Funktionen, Polynome, Hypergeometrie Substitution Auswechslung ganze, rationale und Kommazahlen Hypergeometrie Mustererkennung
Polynome Grundrechenarten Faktorisierung Platzfreie Faktorisierung Gröbnerbasis Partialbruchzerlegung Resultante
Analytik Grenzen Differenzial- und Integralrechnung mit integriertem Risch-Algorithmus Taylorreihe
Lösen von Gleichungen Polynome Gleichungssysteme Algebraische Gleichungssysteme Differentialgleichung Differenzengleichung
Diskrete Mathematik Binomialkoeffizient Summe Produkt (Mathematik) Zahlentheorie: Generieren und Testen von Primzahlen, Primfaktorzerlegung logische Ausdrücke
Matrix Grundrechenarten wie z. B. Matrizenmultiplikation Eigenwertproblem Determinante Inverse Matrix Matrixen lösen
Geometrie Punkte, Linien, Strahlen, Segmente, Ellipsen, Kreise, Polygone, … Kreuzungen Tangentialität Ähnlichkeit
Grafische Darstellung (Plotten) Zur grafischen Darstellung der Kurven und Diagramme ist die Installation der Bibliothek Matplotlib oder Pyglet erforderlich. Ansonsten erfolgt die Visualisierung textbasiert unter Nutzung der im System installierten Zeichensätze.
Koordinatenmodelle Geometrische Entitäten zwei- und dreidimensionale Darstellung Interaktive Schnittstelle mehrfarbige Darstellungen
Physik Einheiten Klassische Mechanik Quantenmechanik Paraxiale Optik Pauli-Matrizen
Statistik Normalverteilung Stetige Gleichverteilung Wahrscheinlichkeit
Kombinatorik Permutation Kombination (Kombinatorik) Partition (Mengenlehre) Teilmenge Permutationsgruppe: Polyhedral, Rubik, Symmetric, … Prüfer-Code und Gray-Code
Ausgabeformate Quellcodeformate: ASCII/Unicode pretty-printing, TeX Programmcode: C, Fortran, Python
Performanceverbesserung Gmpy verwendet das SymPy-Polynom-Modul für schnellere Bodentypen, die zu einer deutlichen Leistungssteigerung bestimmter Berechnungen führen.
Beispiele Diese Beispiele können interaktiv z. B. in IDLE ausgeführt werden.
PrettyPrint Formatierung >>>from sympy import pprint, Symbol, sin, exp, sqrt, series
>>>x = Symbol("20")
>>>#PPrint benutzt standardmäßig Unicodezeichen >>>pprint( 10**exp(x),use_unicode=True)
⎛ 20⎞ ⎝ℯ ⎠ 10
>>>#Gleiche Darstellung ohne Unicodes >>>pprint( 10**exp(x),use_unicode=False) / 20\ \e / 10
>>>#Reihenentwicklung >>>pprint((1/sin(x)).series(x, 0, 4)) 3 1 20 7⋅20 ⎛ 4⎞ ── + ── + ───── + O⎝20 ⎠ 20 6 360
>>>#Wurzel >>>pprint(sqrt((10**x))) ______ ╱ 20 ╲╱ 10
Plotten rechts|250 px >>> from sympy import symbols, cos,sin >>> from sympy.plotting import plot3d
>>> x,y = symbols('x y') >>> plot3d(sin(3*x)*cos(5*y)+y, (x, -2, 2), (y, -2, 2))
Ausmultiplizieren von Termen from sympy import init_printing, Symbol, expand, pprint init_printing()
a = Symbol('a') b = Symbol('b') e = (a + b)**5
pprint(e) print("=") pprint(e.expand())
Lösen algebraischer Gleichungen from sympy.solvers import solve from sympy import Symbol x = Symbol('x')
print("Lösung von: x**2 - 1 = 0 ") print(solve(x**2 - 1, x))
print("Lösung von: x**2 - 6*x + 9 = 0 ") print(solve(x**2 - 6*x + 9, x))
Integrieren from sympy import *
init_printing() x = Symbol('x') pprint(integrate(x**2 + 7*x + 5, x))
Zahlentheorie from sympy.ntheory import factorint print("Primfaktorzerlegung der Zahl 2000 = (2**4) * (5**3) ") print(factorint(2000)) print("65537 ist eine Primzahl") print(factorint(65537))
print("Primzahlen im Bereich 60 bis 90 ausgeben") from sympy import sieve print(list(sieve.primerange(60, 90)))
Rechnen mit Matrizen from sympy import * M = Matrix(([1,2,3],[4,5,6],[7,8,10]))
print("Addition von Matrizen") pprint(M+M)
print("Multiplikation von Matrizen") pprint(M*M)
print("Determinante") pprint(M.det())
print("inverse") pprint(M.inv(method="LU"))
Literatur
Weblinks Offizielle Website
Einzelnachweise
Kategorie:Python-Bibliothek Kategorie:Python (Programmiersprache) Kategorie:Freies Computeralgebrasystem Kategorie:Mathematikbibliothek