SymPy Logo SymPy

Hoja de ruta

En términos generales, cualquier forma de cálculo matemático simbólico está dentro del alcance de SymPy. Sin embargo, hay algunas cosas en las que planeamos enfocar nuestros esfuerzos de desarrollo.

Sistema de Suposiciones (assumptions)

El sistema de supuestos (assumptions) maneja la forma en la que SymPy hace suposiciones en las expresiones y hace inferencias y simplificaciones basadas en esos supuestos (por ejemplo, suponiendo que una expresión es "positiva" o "entera"). El sistema de suposiciones de SymPy se encuentra actualmente en un estado de desorden, ya que hay un sistema "nuevo" y un sistema "antiguo" que deben fusionarse correctamente. Sin embargo, esta es una tarea desafiante.

Generación de código

La generación de código se refiere a la tarea de convertir expresiones de SymPy a otros lenguajes, como C o Fortran, con el fin de realizar una evaluación numérica rápida. El objetivo de la generación de código es poder utilizar SymPy para modelar un problema simbólicamente y luego convertir ese modelo simbólico en un código rápido que se puede evaluar numéricamente para datos reales. Nuestra hoja de ruta para la generación de código es hacer que la traducción sea lo más fluida posible, a través de elementos como abstracciones de nivel superior que reducen la cantidad de trabajo que necesita el usuario final, pipeline de optimización, que permitiría a SymPy aprovechar sus conocimientos matemáticos para crear código más rápido y preciso, y más herramientas para aydar a resolver problemas de dominio específico.

Rendimiento

El rendimiento es un aspecto importante en el cálculo simbólico. SymPy a menudo sufre en términos de rendimiento debido a que está escrito en Python puro. Hay algunas maneras en que SymPy puede hacerse más eficiente. Una de ellas es evaluar y perfilar más cuidadosamente el código de SymPy, para que las ineficiencias puedan ser eliminadas. Esto incluye herramientas para evitar que ocurran regresiones de rendimiento en primer lugar. Lo segundo es tener un núcleo simbólico rápido que se pueda conectar opcionalmente para que las operaciones centrales de SymPy sean más rápidas. El plan es utilizar la biblioteca SymEngine como un núcleo simbólico rápido opcional para SymPy. SymEngine es una biblioteca simbólica escrita en C++, con énfasis en el rendimiento. Una tercera forma en que SymPy puede ser más eficiente es mediante la implementación de algoritmos simbólicos más rápidos para varios cálculos (ver más abajo).

SymPy Live y SymPy Gamma

SymPy Live es una aplicación web que corre una sesión completa de SymPy en el navegador. Puede usarse de forma independiente, y también se usa en la Documentación de SymPy para permitir a los lectores evaluar los ejemplos de la documentación de forma interactiva. El backend de SymPy necesita modernización y hay varias mejoras posibles para el frontend también.

SymPy Gamma es una aplicación web que recibe una fórmula matemática y realiza muchos cálculos útiles con ella, como graficación, solución, simplificación, e integración simbólica. El objetivo de SymPy Gamma es ser un competidor de código abierto para productos como WolframAlpha. Nuestro objetivo es mejorar SymPy Gamma agregando cálculos más útiles a la salida y mejorar el análisis para que los usuarios no necesiten conocer la sintaxis de SymPy para usarla.

Mejoras Algorítmicas

SymPy depende de una gran variedad de algoritmos de computación simbólica para funcionar. Muchos algoritmos ya están implementados, pero algunos no lo están. Estos incluyen cosas como algoritmos mejorados para integración simbólica, sumas, simplificación, manipulación polinómica y resolución de ecuaciones, entre muchos otros. Los algoritmos mejorados aumentarán el número de cálculos simbólicos que SymPy puede calcular con éxito y, en muchos casos, mejorarán en gran medida el rendimiento de los algoritmos existentes. Un buen recurso para el tipo de cosas que queremos implementar es nuestra página de ideas de Google Summer of Code .

Mejoras generales

Además de los aspectos específicos anteriores, siempre apuntamos a mejorar SymPy de muchas maneras. Esto incluye cosas como

  • corregir bugs
  • mejor documentación
  • herramientas de desarrollo mejoradas
  • nuevas funcionalidades
  • mayor acercamiento a la comunidad