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.13.2[1] (11. August 2024) |
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
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sympy_Plottingexample.png/250px-Sympy_Plottingexample.png)
>>> 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.13.2. 11. August 2024 (abgerufen am 27. August 2024).
- ↑ 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.