SymPy
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 Live[2] oder SymPy Gamma[3]
SymPy
| |
---|---|
Basisdaten
| |
Hauptentwickler | Community-Projekt, initiiert durch Aaron Meurer |
Entwickler | Aaron Meurer, Ondřej Čertík, Christopher P. Smith |
Erscheinungsjahr | 2007 |
Aktuelle Version | 1.12[1] (10. Mai 2023) |
Betriebssystem | Plattformunabhängigkeit |
Programmiersprache | Python |
Kategorie | Computeralgebrasystem |
Lizenz | BSD-Lizenz |
sympy.org |
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.[4]
SymPy ist freie Software und steht unter der neuen BSD-Lizenz. Die führenden Entwickler sind Ondřej Čertík und Aaron Meurer.[4]
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.[5] Davon sind mehr als 100.000 Zeilen für umfangreiche Selbsttests vorgesehen.
Fähigkeiten Bearbeiten
SymPy umfasst zahlreiche mathematische Funktionen. Die nachfolgende Übersicht zeigt die grundlegende Fähigkeit des Basissystems sowie die Möglichkeit der modularen Erweiterungen.
Basissystem Bearbeiten
- 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 Bearbeiten
- Grundrechenarten
- Faktorisierung
- Platzfreie Faktorisierung
- Gröbnerbasis
- Partialbruchzerlegung
- Resultante
Analytik Bearbeiten
- Grenzen
- Differenzial- und Integralrechnung mit integriertem Risch-Algorithmus
- Taylorreihe
Lösen von Gleichungen Bearbeiten
- Polynome
- Gleichungssysteme
- Algebraische Gleichungssysteme
- Differentialgleichung
- Differenzengleichung
Diskrete Mathematik Bearbeiten
- Binomialkoeffizient
- Summe
- Produkt (Mathematik)
- Zahlentheorie: Generieren und Testen von Primzahlen, Primfaktorzerlegung
- logische Ausdrücke
Matrix Bearbeiten
- Grundrechenarten wie z. B. Matrizenmultiplikation
- Eigenwertproblem
- Determinante
- Inverse Matrix
- Matrixen lösen
Geometrie Bearbeiten
- Punkte, Linien, Strahlen, Segmente, Ellipsen, Kreise, Polygone, …
- Kreuzungen
- Tangentialität
- Ähnlichkeit
Grafische Darstellung (Plotten) Bearbeiten
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 Bearbeiten
Statistik Bearbeiten
Kombinatorik Bearbeiten
- Permutation
- Kombination (Kombinatorik)
- Partition (Mengenlehre)
- Teilmenge
- Permutationsgruppe: Polyhedral, Rubik, Symmetric, …
- Prüfer-Code und Gray-Code
Ausgabeformate Bearbeiten
Performanceverbesserung Bearbeiten
- Gmpy verwendet das SymPy-Polynom-Modul für schnellere Bodentypen, die zu einer deutlichen Leistungssteigerung bestimmter Berechnungen führen.
Beispiele Bearbeiten
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
>>> 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 Bearbeiten
- Ronan Lamy: Instant SymPy Starter. mitp, ISBN 978-1-78216-362-6 (englisch).
Weblinks Bearbeiten
Einzelnachweise Bearbeiten
- ↑ Release 1.12. 10. Mai 2023 (abgerufen am 2. Juni 2023).
- ↑ SymPy Live
- ↑ SymPy Gamma
- ↑ a b About Sympy. Abgerufen am 1. August 2018 (englisch).
- ↑ The SymPy Open Source Project on Open Hub. Abgerufen am 3. August 2018.