SymPy

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
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
Programmier­sprache Python
Kategorie Computeralgebrasystem
Lizenz BSD-Lizenz
sympy.org

SymPy ist eine Python-Bibliothek für symbolisch-mathematische Berechnungen. Die Computeralgebra-Funktionen werden angeboten als

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]

Polynome[Bearbeiten | Quelltext bearbeiten]

Analytik[Bearbeiten | Quelltext bearbeiten]

Lösen von Gleichungen[Bearbeiten | Quelltext bearbeiten]

Diskrete Mathematik[Bearbeiten | Quelltext bearbeiten]

Matrix[Bearbeiten | Quelltext bearbeiten]

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]

Kombinatorik[Bearbeiten | Quelltext bearbeiten]

Ausgabeformate[Bearbeiten | Quelltext bearbeiten]

  • Quellcodeformate: ASCII/Unicode pretty-printing, TeX
  • Programmcode: C, Fortran, Python

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   720       4
── + ── + ───── + O20 
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]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Release 1.12. 10. Mai 2023 (abgerufen am 2. Juni 2023).
  2. SymPy Live
  3. SymPy Gamma
  4. a b About Sympy. Abgerufen am 1. August 2018 (englisch).
  5. The SymPy Open Source Project on Open Hub. Abgerufen am 3. August 2018.