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
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