1 puntos por GN⁺ 2024-03-01 | 1 comentarios | Compartir por WhatsApp

Ventajas de SymPy

  • Gratis: SymPy, bajo licencia BSD, se puede usar libremente y no tiene costo.
  • Basado en Python: SymPy está escrito completamente en Python y utiliza Python.
  • Ligero: SymPy solo depende de mpmath, una biblioteca pura de Python para aritmética de punto flotante de precisión arbitraria, por lo que es fácil de usar.
  • Biblioteca: Además de usarse como herramienta interactiva, puede integrarse en otras aplicaciones o ampliarse con funciones personalizadas.

Proyectos que usan SymPy

  • Cadabra: sistema de álgebra tensorial y teoría de campos (cuántica) que usa SymPy para operaciones de álgebra escalar.
  • ChemPy: paquete útil para química escrito en Python.
  • devito: DSL simbólico y compilador just-in-time para cómputo stencil de alto rendimiento.
  • EinsteinPy: paquete de Python para relatividad general simbólica y numérica.
  • galgebra: álgebra geométrica (antes sympy.galgebra).
  • LaTeX Expression project: facilita la composición tipográfica en LaTeX de expresiones algebraicas y permite sustitución automática y cálculo de resultados.
  • Lcapy: paquete experimental de Python para la enseñanza del análisis de circuitos lineales.
  • OctSymPy: paquete simbólico para Octave que usa SymPy.
  • Optlang: paquete de Python para resolver problemas de optimización matemática.
  • PyDy: dinámica multicuerpo en Python.
  • pyneqsys: definido simbólicamente para resolver numéricamente sistemas de ecuaciones no lineales.
  • pyodesys: integración numérica sencilla de sistemas de ODE en Python.
  • PyTorch TorchInductor: TorchInductor usa SymPy para admitir formas y strides dinámicos.
  • QMCPACK: Monte Carlo cuántico en C++. Usa SymPy para generar valores de referencia para pruebas unitarias y parte de la generación de código.
  • Quantum Programming in Python: oscilador armónico simple cuántico 1D y compuertas de mapeo cuántico.
  • SageMath: sistema matemático de código abierto que incluye SymPy.
  • Scikit-fdiff: discretización por diferencias finitas.
  • SfePy: elementos finitos simples en Python.
  • Spyder: entorno científico de desarrollo en Python comparable a Rstudio o MATLAB; soporte completo de SymPy disponible en la consola IPython de Spyder.
  • Symbolic statistical modeling: añade operaciones estadísticas a modelos físicos complejos.
  • yt: paquete de Python para analizar y visualizar datos volumétricos (unyt, el sistema de unidades de yt, usa SymPy).

La opinión de GN⁺

  • SymPy se ofrece gratis bajo licencia BSD y, al estar escrito con base en Python, es una biblioteca de operaciones matemáticas familiar para quienes usan Python. Esto la hace especialmente popular en la comunidad de código abierto y útil en diversos campos científicos y de ingeniería.
  • SymPy es ligero y puede integrarse fácilmente en otras aplicaciones, lo que da flexibilidad para resolver problemas matemáticos complejos o ampliarlo con funciones propias.
  • Para adoptar esta tecnología se necesita una comprensión básica de Python, y su valor destaca especialmente en proyectos donde el modelado matemático o el cálculo simbólico son importantes.
  • Los beneficios de usar SymPy incluyen operaciones matemáticas de alto rendimiento, escalabilidad hacia distintos campos y mejora continua gracias al apoyo de la comunidad de código abierto.
  • Otros proyectos con funciones similares incluyen Mathematica, Maple y Symbolic Math Toolbox de MATLAB, pero como son software comercial, SymPy puede ser una alternativa gratuita y potente.

1 comentarios

 
GN⁺ 2024-03-01
Comentarios de Hacker News
  • Trabajo en robótica y con frecuencia tengo que escribir vectores grandes calculados como resultado de transformaciones 3D y calcular sus jacobianos (derivadas) con respecto a varias variables de estado. Esto lleva a ecuaciones complejas. Con sympy puedo calcular estos vectores grandes de forma declarativa, calcular los jacobianos y exportar el resultado como código C para llevarlo de inmediato al caso de código. Por ejemplo, hay un ejemplo de juguete que muestra cómo expresar de forma declarativa un método para estimar la posición de un sensor con respecto al centro del robot, si se puede acceder a un conjunto de datos que incluye la posición del robot y la del sensor. Para esto solo hay que definir las funciones transform e invert.
  • SymPy es una herramienta realmente genial, y la he usado durante años como herramienta educativa. Comparado con Mathematica/Maple y similares, creo que es la mejor opción porque tiene funciones de API que coinciden exactamente con los verbos que usan los estudiantes al aprender matemáticas (solve, expand, factor, etc.). Hay un pequeño tutorial para quienes quieren empezar, y también está disponible en formato de notebook ejecutable. Además, para quienes quieran probar SymPy sin instalar nada, también existe un live shell de SymPy que permite ejecutar Python + SymPy en el navegador web.
  • Las matemáticas simbólicas no se exploraban seriamente en la licenciatura, y la mayor parte de lo que vi estaba atado a software propietario como Mathematica y MATLAB. Trabajo en un área de matemáticas/ingeniería que usa mucho cálculo tensorial, y usé Maxima como herramienta principal, pero sus paquetes para esto son limitados y poco cómodos de manejar. Ahora uso SymPy para cálculos más complejos, gracias a las abstracciones que Python ya tiene. Algún día espero leer 'Principles' de Norvig y poder modificar Maxima según mis necesidades (si alguien conoce mejores referencias para leer el código fuente/la implementación de Maxima sobre cálculo tensorial/álgebra simbólica [tensorial, geométrica], me gustaría saberlo).
  • Hay benchmarks entre SymPy y Mathematica, y los resultados muestran que Mathematica no pudo resolver 1,523 problemas, mientras que SymPy no pudo resolver 48,529. Así que SymPy todavía tiene camino por recorrer.
  • Uso SymPy como calculadora, y se comparte un enlace de GitHub para ello.
  • Hace 10 años, cuando me interesaba la relatividad general, quería escribir un programa sencillo que manejara cálculo simbólico para las ecuaciones de campo de Einstein. SymPy era una opción, pero era difícil de usar y no logré hacerlo funcionar. Lo resolví con Mathematica en unas pocas horas. Después lo amplié e hice muchos cálculos para un artículo sobre agujeros negros. Hoy SymPy ha pasado por mucho desarrollo y se han construido buenas librerías, e incluso hay un ejemplo de notebook de Jupyter sobre la métrica de Schwarzschild.
  • SymPy funciona muy bien en Jupyter. Se comparte un enlace a un notebook de demostración para SymPy.
  • Se comparte un enlace de Wikipedia sobre SymPy, junto con un enlace a una discusión sobre cómo enseñar logaritmos usando Python y SymPy. También hay un enlace que compara SymPy y Matlab, y otro a un documento que presenta NumPy a usuarios de Matlab.
  • SymPy es suficiente para hacer el trabajo. Normalmente lo uso dentro del combo de librerías SageMath, y me pregunto si SymPy ya ha avanzado lo suficiente como para usarse de manera independiente.
  • Para un "físico" numérico, SymPy fue como un regalo de los dioses. Es excelente para prototipar modelos más avanzados antes de optimizarlos después en C++. No he usado mucho Mathematica, pero me da la impresión de que es simbólicamente más potente o menos quisquilloso que SymPy. Ojalá alguien con más experiencia en Mathematica pueda explicarlo con claridad.