# 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 oder SymPy 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
Plotten
Ausmultiplizieren von Termen
Lösen algebraischer Gleichungen
Integrieren
Zahlentheorie
Rechnen mit Matrizen