1 Punkte von GN⁺ 2024-03-01 | 1 Kommentare | Auf WhatsApp teilen

Vorteile von SymPy

  • Kostenlos: SymPy steht unter der BSD-Lizenz und kann frei und ohne Kosten genutzt werden.
  • Python-basiert: SymPy ist vollständig in Python geschrieben und verwendet Python.
  • Leichtgewichtig: SymPy hängt nur von mpmath ab, einer reinen Python-Bibliothek für Gleitkomma-Arithmetik mit beliebiger Präzision, und ist dadurch einfach zu verwenden.
  • Bibliothek: Es kann nicht nur als interaktives Werkzeug genutzt, sondern auch in andere Anwendungen eingebettet oder mit benutzerdefinierten Funktionen erweitert werden.

Projekte, die SymPy verwenden

  • Cadabra: Ein Tensoralgebra- und (Quanten-)Feldtheorie-System, das SymPy für skalare algebraische Operationen verwendet.
  • ChemPy: Ein in Python geschriebenes Paket, das für die Chemie nützlich ist.
  • devito: Eine symbolische DSL und ein Just-in-Time-Compiler für High-Performance-Stencil-Berechnungen.
  • EinsteinPy: Ein Python-Paket für symbolische und numerische allgemeine Relativitätstheorie.
  • galgebra: Geometrische Algebra (früher sympy.galgebra).
  • LaTeX Expression project: Erleichtert den LaTeX-Satz algebraischer Ausdrücke und ermöglicht automatische Einsetzung sowie Ergebnisberechnung.
  • Lcapy: Ein experimentelles Python-Paket für die Ausbildung in linearer Schaltungsanalyse.
  • OctSymPy: Ein symbolisches Paket für Octave, das SymPy verwendet.
  • Optlang: Ein Python-Paket zum Lösen mathematischer Optimierungsprobleme.
  • PyDy: Mehrkörpersystemdynamik in Python.
  • pyneqsys: Symbolisch definiert, um Systeme nichtlinearer Gleichungen numerisch zu lösen.
  • pyodesys: Einfache numerische Integration von ODE-Systemen in Python.
  • PyTorch TorchInductor: TorchInductor verwendet SymPy zur Unterstützung dynamischer Shapes und Strides.
  • QMCPACK: Quanten-Monte-Carlo in C++. Verwendet SymPy zur Erzeugung von Referenzwerten für Unit-Tests und für Teile der Codegenerierung.
  • Quantum Programming in Python: Quanten-1D-einfacher-harmonischer-Oszillator und Quantum-Mapping-Gates.
  • SageMath: Ein Open-Source-Mathematiksystem, das SymPy enthält.
  • Scikit-fdiff: Finite-Differenzen-Diskretisierung.
  • SfePy: Einfache finite Elemente in Python.
  • Spyder: Eine wissenschaftliche Python-Entwicklungsumgebung ähnlich wie Rstudio oder MATLAB; vollständige SymPy-Unterstützung in der IPython-Konsole von Spyder.
  • Symbolic statistical modeling: Fügt komplexen physikalischen Modellen statistische Operationen hinzu.
  • yt: Ein Python-Paket zur Analyse und Visualisierung volumetrischer Daten (unyt, das Einheitensystem von yt, verwendet SymPy).

Meinung von GN⁺

  • SymPy wird unter der BSD-Lizenz kostenlos bereitgestellt und ist eine Python-basierte Bibliothek für mathematische Operationen, die Python-Nutzern vertraut ist. Besonders in der Open-Source-Community wird sie aktiv genutzt und bietet Vorteile für den Einsatz in verschiedenen wissenschaftlichen und ingenieurtechnischen Bereichen.
  • SymPy ist leichtgewichtig und lässt sich einfach in andere Anwendungen integrieren. Dadurch bietet es Flexibilität für Nutzer, die komplexe mathematische Probleme lösen oder eigene Funktionen hinzufügen und das System erweitern möchten.
  • Für die Einführung dieser Technologie ist ein grundlegendes Verständnis von Python erforderlich; ihren Wert zeigt sie besonders in Projekten, in denen mathematische Modellierung oder symbolische Berechnungen wichtig sind.
  • Zu den Vorteilen von SymPy zählen leistungsfähige mathematische Operationen, Erweiterbarkeit für vielfältige Anwendungsbereiche und kontinuierliche Verbesserungen durch die Unterstützung der Open-Source-Community.
  • Andere Projekte mit ähnlichen Funktionen sind Mathematica, Maple und die Symbolic Math Toolbox von MATLAB. Da es sich dabei jedoch um kommerzielle Software handelt, ist SymPy eine kostenlose und zugleich leistungsfähige Alternative.

1 Kommentare

 
GN⁺ 2024-03-01
Hacker-News-Kommentare
  • Ich arbeite in der Robotik und muss oft große Vektoren formulieren, die aus 3D-Transformationen berechnet werden, und ihre Jacobi-Matrizen (Ableitungen) bezüglich verschiedener Zustandsvariablen berechnen. Das führt zu komplexen Gleichungen. Mit sympy kann man diese großen Vektoren deklarativ berechnen, die Jacobi-Matrizen bestimmen und das Ergebnis als C-Code exportieren, um es sofort in einen Code-Case zu übernehmen. Es gibt zum Beispiel ein Spielzeugbeispiel, das zeigt, wie man deklarativ ausdrücken kann, wie die Position eines Sensors relativ zum Roboterzentrum geschätzt wird, wenn man Zugriff auf einen Datensatz mit Roboterposition und Sensorposition hat. Dafür muss man nur die Funktionen transform und invert definieren.
  • SymPy ist wirklich ein großartiges Tool, das ich seit Jahren als Lehrmittel verwende. Im Vergleich zu Mathematica/Maple usw. halte ich es für die beste Option, weil die API-Funktionen genau mit den Verben übereinstimmen, die Studierende beim Lernen von Mathematik verwenden (solve, expand, factor usw.). Es gibt ein kleines Tutorial für Einsteiger, das auch als ausführbares Notebook verfügbar ist. Außerdem gibt es für alle, die SymPy ohne Installation ausprobieren möchten, eine SymPy-Live-Shell, in der Python + SymPy im Webbrowser ausgeführt werden kann.
  • Symbolische Mathematik wurde im Bachelorstudium nicht ernsthaft behandelt, und das, womit ich in Berührung kam, war meist an proprietäre Software wie Mathematica und MATLAB gebunden. Ich arbeite in einem Mathematik-/Ingenieurfeld, das stark auf Tensorrechnungen angewiesen ist, und habe Maxima als Hauptwerkzeug verwendet, aber die Pakete dafür sind begrenzt und umständlich zu handhaben. Für komplexere Berechnungen nutze ich inzwischen SymPy, und zwar wegen der Abstraktionen, die Python bereits bietet. Ich hoffe, irgendwann Norvigs „Principles“ zu lesen und Maxima an meine Bedürfnisse anpassen zu können (falls jemand bessere Referenzen kennt, um den Quellcode/die Implementierung von Maxima für Tensorrechnung/symbolische (Tensor-, geometrische) Algebra zu verstehen, würde ich das gern wissen).
  • Es gibt einen Benchmark zwischen SymPy und Mathematica, und die Ergebnisse zeigen, dass Mathematica 1.523 Probleme nicht lösen konnte, während SymPy 48.529 Probleme nicht lösen konnte. SymPy hat also noch Aufholbedarf.
  • Ich benutze SymPy als Taschenrechner, und dazu wurde ein GitHub-Link geteilt.
  • Als ich mich vor 10 Jahren für allgemeine Relativitätstheorie interessierte, wollte ich ein einfaches Programm schreiben, das symbolische Berechnungen zu den Einstein-Feldgleichungen verarbeitet. SymPy war eine Option, aber es war schwer zu benutzen und ich bekam es nicht zum Laufen. Mit Mathematica war das in wenigen Stunden erledigt. Später habe ich es erweitert und viele Berechnungen für eine Black-Hole-Arbeit durchgeführt. Inzwischen hat SymPy viel Entwicklung erfahren, gute Bibliotheken wurden darauf aufgebaut, und es gibt sogar ein Jupyter-Notebook-Beispiel zur Schwarzschild-Metrik.
  • SymPy funktioniert sehr gut in Jupyter. Ein Link zu einem Demo-Notebook für SymPy wurde geteilt.
  • Es wurden ein Wikipedia-Link zu SymPy sowie ein Diskussionslink dazu geteilt, wie man mit Python und SymPy Logarithmen unterrichtet. Außerdem gibt es einen Link zum Vergleich von SymPy und Matlab sowie ein Dokument, das NumPy für Matlab-Nutzer einführt.
  • SymPy reicht aus, um die Arbeit zu erledigen. Normalerweise nutze ich es in der SageMath-Kombibibliothek, und es gibt die Frage, ob SymPy inzwischen so weit ist, dass es auch eigenständig sinnvoll verwendet werden kann.
  • Für einen numerischen „Physiker“ war SymPy wie ein Geschenk des Himmels. Es eignet sich hervorragend, um fortgeschrittene Modelle zu prototypisieren, bevor man sie später in C++ optimiert. Ich habe Mathematica nicht viel benutzt, aber es wirkt symbolisch leistungsfähiger oder weniger heikel als SymPy. Ich hoffe, jemand mit mehr Mathematica-Erfahrung kann das klarer einordnen.