1 points par GN⁺ 2024-03-01 | 1 commentaires | Partager sur WhatsApp

Les avantages de SymPy

  • Gratuit : SymPy, distribué sous licence BSD, peut être utilisé librement et sans frais.
  • Basé sur Python : SymPy est entièrement écrit en Python et s’utilise avec Python.
  • Léger : SymPy ne dépend que de mpmath, une bibliothèque Python pure pour les calculs en virgule flottante à précision arbitraire, ce qui le rend simple à utiliser.
  • Bibliothèque : Au-delà d’un usage comme outil interactif, il peut être intégré dans d’autres applications ou étendu avec des fonctions personnalisées.

Projets qui utilisent SymPy

  • Cadabra : système d’algèbre tensorielle et de théorie des champs (quantiques) qui utilise SymPy pour les opérations d’algèbre scalaire.
  • ChemPy : paquet utile pour la chimie, écrit en Python.
  • devito : DSL symbolique et compilateur just-in-time pour le calcul de stencils haute performance.
  • EinsteinPy : paquet Python pour la relativité générale symbolique et numérique.
  • galgebra : algèbre géométrique (anciennement sympy.galgebra).
  • LaTeX Expression project : facilite la composition LaTeX d’expressions algébriques, avec substitution automatique et calcul des résultats.
  • Lcapy : paquet Python expérimental pour l’enseignement de l’analyse des circuits linéaires.
  • OctSymPy : paquet symbolique pour Octave utilisant SymPy.
  • Optlang : paquet Python pour résoudre des problèmes d’optimisation mathématique.
  • PyDy : dynamique multicorps en Python.
  • pyneqsys : défini symboliquement pour résoudre numériquement des systèmes d’équations non linéaires.
  • pyodesys : intégration numérique simple de systèmes d’ODE en Python.
  • PyTorch TorchInductor : TorchInductor utilise SymPy pour prendre en charge les formes et strides dynamiques.
  • QMCPACK : Monte Carlo quantique en C++ ; utilise SymPy pour générer des valeurs de référence destinées aux tests unitaires et à une partie de la génération de code.
  • Quantum Programming in Python : oscillateur harmonique simple quantique 1D et portes de mappage quantique.
  • SageMath : système mathématique open source incluant SymPy.
  • Scikit-fdiff : discrétisation par différences finies.
  • SfePy : éléments finis simples en Python.
  • Spyder : environnement de développement Python scientifique comparable à Rstudio ou MATLAB ; prise en charge complète de SymPy dans la console IPython de Spyder.
  • Symbolic statistical modeling : ajoute des opérations statistiques à des modèles physiques complexes.
  • yt : paquet Python pour analyser et visualiser des données volumiques (unyt, le système d’unités de yt, utilise SymPy).

L’avis de GN⁺

  • SymPy est une bibliothèque de calcul mathématique gratuite sous licence BSD, écrite en Python, et familière pour les utilisateurs de Python. Elle est particulièrement utilisée activement dans la communauté open source et présente des atouts applicables à de nombreux domaines scientifiques et d’ingénierie.
  • SymPy est léger et s’intègre facilement dans d’autres applications, offrant aux utilisateurs la flexibilité nécessaire pour résoudre des problèmes mathématiques complexes ou l’étendre en ajoutant leurs propres fonctions.
  • L’adoption de cette technologie nécessite une compréhension de base de Python, et elle montre particulièrement sa valeur dans les projets où la modélisation mathématique ou le calcul symbolique jouent un rôle important.
  • Les bénéfices que l’on peut tirer de SymPy incluent des opérations mathématiques performantes, une extensibilité vers divers domaines, ainsi qu’une amélioration continue grâce au soutien de la communauté open source.
  • Parmi les projets offrant des fonctions similaires figurent Mathematica, Maple et la Symbolic Math Toolbox de MATLAB, mais comme il s’agit de logiciels commerciaux, SymPy peut constituer une alternative gratuite et puissante.

1 commentaires

 
GN⁺ 2024-03-01
Commentaires Hacker News
  • Je travaille en robotique, et je dois souvent écrire de grands vecteurs calculés à partir de transformations 3D et calculer leurs jacobiens (dérivées) par rapport à plusieurs variables d’état. Cela mène à des équations complexes. Avec sympy, on peut calculer ces grands vecteurs de façon déclarative, calculer le jacobien, puis exporter le résultat en code C pour l’intégrer immédiatement dans du code. Par exemple, si l’on a accès à un jeu de données contenant la position du robot et celle du capteur, il existe un petit exemple jouet montrant comment exprimer de manière déclarative la façon d’estimer la position du capteur par rapport au centre du robot. Pour cela, il suffit de définir les fonctions transform et invert.
  • SymPy est vraiment un excellent outil, que j’utilise depuis des années comme outil pédagogique. Comparé à Mathematica/Maple, etc., je pense que c’est la meilleure option parce que ses fonctions d’API correspondent exactement aux verbes que les étudiants utilisent lorsqu’ils apprennent les mathématiques (solve, expand, factor, etc.). Il existe un petit tutoriel pour les débutants, également disponible sous forme de notebook exécutable. Et pour ceux qui veulent essayer SymPy sans rien installer, il existe aussi un live shell SymPy permettant d’exécuter Python + SymPy dans le navigateur web.
  • Les mathématiques symboliques n’ont pas été sérieusement explorées pendant le cursus de premier cycle, et ce que j’ai rencontré était surtout lié à des logiciels propriétaires comme Mathematica et MATLAB. Je travaille dans un domaine des maths/de l’ingénierie qui utilise beaucoup le calcul tensoriel, et j’ai utilisé Maxima comme outil principal, mais ses packages sont limités et il est peu pratique à manipuler. J’utilise maintenant SymPy pour des calculs plus complexes, grâce aux abstractions dont dispose déjà Python. J’espère qu’un jour je lirai les « Principles » de Norvig et pourrai modifier Maxima selon mes besoins (si quelqu’un connaît de meilleures références pour lire le code source/l’implémentation de Maxima sur le calcul tensoriel / l’algèbre symbolique (tensorielle, géométrique), cela m’intéresse).
  • Il existe un benchmark entre SymPy et Mathematica, et les résultats montrent que Mathematica n’a pas réussi à résoudre 1 523 problèmes, tandis que SymPy n’a pas réussi à en résoudre 48 529. SymPy a donc encore du retard à combler.
  • J’utilise SymPy comme calculatrice, et un lien GitHub est fourni à cet effet.
  • Il y a dix ans, quand je m’intéressais à la relativité générale, je voulais écrire un programme simple pour effectuer des calculs symboliques sur les équations de champ d’Einstein. SymPy était une option, mais il était difficile à utiliser et je n’ai pas réussi à le faire fonctionner. J’ai utilisé Mathematica et j’ai résolu le problème en quelques heures. Plus tard, je l’ai étendu et m’en suis servi pour effectuer de nombreux calculs dans un article sur les trous noirs. Aujourd’hui, SymPy a beaucoup progressé, de bonnes bibliothèques ont été construites, et il existe même un exemple de notebook Jupyter sur la métrique de Schwarzschild.
  • SymPy fonctionne très bien dans Jupyter. Un lien vers un notebook de démonstration pour SymPy est fourni.
  • Un lien Wikipedia sur SymPy est fourni, ainsi qu’un lien vers une discussion sur la manière d’enseigner les logarithmes avec Python et SymPy. Il y a aussi un lien comparant SymPy et Matlab, ainsi qu’un document présentant NumPy aux utilisateurs de Matlab.
  • SymPy suffit pour faire le travail. En général, je l’utilise dans la bibliothèque combinée SageMath, et je me demande s’il a suffisamment progressé pour être utilisé de manière autonome.
  • Pour un « physicien » du numérique, SymPy a été un cadeau du ciel. C’est excellent pour prototyper des modèles plus avancés avant de les optimiser ensuite en C++. Je n’ai pas beaucoup utilisé Mathematica, mais il donne l’impression d’être plus puissant symboliquement ou moins capricieux que SymPy. J’espère que quelqu’un ayant plus d’expérience avec Mathematica pourra clarifier ce point.