SymPy
| SymPy
| |
|---|---|
| Basisdaten
| |
| Hauptentwickler | Community-Projekt, initiiert durch Aaron Meurer |
| Entwickler | Aaron Meurer, Ondřej Čertík, Christopher P. Smith |
| Erscheinungsjahr | 2007 |
| Aktuelle Version | 1.14.0[1] (27. April 2025) |
| Betriebssystem | Plattformunabhängigkeit |
| Programmiersprache | Python |
| Kategorie | Computeralgebrasystem |
| Lizenz | BSD-Lizenz |
| sympy.org | |
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 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 | Quelltext 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 | Quelltext 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
- Grundrechenarten
- Faktorisierung
- Platzfreie Faktorisierung
- Gröbnerbasis
- Partialbruchzerlegung
- Resultante
Analytik
[Bearbeiten | Quelltext bearbeiten]- Grenzen
- Differenzial- und Integralrechnung mit integriertem Risch-Algorithmus
- Taylorreihe
Lösen von Gleichungen
[Bearbeiten | Quelltext bearbeiten]- Polynome
- Gleichungssysteme
- Algebraische Gleichungssysteme
- Differentialgleichung
- Differenzengleichung
Diskrete Mathematik
[Bearbeiten | Quelltext bearbeiten]- Binomialkoeffizient
- Summe
- Produkt (Mathematik)
- Zahlentheorie: Generieren und Testen von Primzahlen, Primfaktorzerlegung
- logische Ausdrücke
Matrix
[Bearbeiten | Quelltext bearbeiten]- Grundrechenarten wie z. B. Matrizenmultiplikation
- Eigenwertproblem
- Determinante
- Inverse Matrix
- Matrixen lösen
Geometrie
[Bearbeiten | Quelltext bearbeiten]- Punkte, Linien, Strahlen, Segmente, Ellipsen, Kreise, Polygone, …
- Kreuzungen
- Tangentialität
- Ähnlichkeit
Grafische Darstellung (Plotten)
[Bearbeiten | Quelltext 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 | Quelltext bearbeiten]Statistik
[Bearbeiten | Quelltext bearbeiten]- Permutation
- Kombination (Kombinatorik)
- Partition (Mengenlehre)
- Teilmenge
- Permutationsgruppe: Polyhedral, Rubik, Symmetric, …
- Prüfer-Code und Gray-Code
Ausgabeformate
[Bearbeiten | Quelltext bearbeiten]Performanceverbesserung
[Bearbeiten | Quelltext bearbeiten]- Gmpy verwendet das SymPy-Polynom-Modul für schnellere Bodentypen, die zu einer deutlichen Leistungssteigerung bestimmter Berechnungen führen.
Beispiele
[Bearbeiten | Quelltext 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 | Quelltext bearbeiten]- Ronan Lamy: Instant SymPy Starter. mitp, ISBN 978-1-78216-362-6 (englisch).
Weblinks
[Bearbeiten | Quelltext bearbeiten]Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Release 1.14.0. 27. April 2025 (abgerufen am 1. Mai 2025).
- ↑ 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.