solve how funcion python algorithm math symbolic-math

how - sympy python 2.7 windows install



Symbolic Mathematics Python? (7)

Estoy sumamente interesado en las matemáticas, la programación y la planificación para comenzar un proyecto simbólico de matemáticas desde cero .

  1. ¿Es esta una buena idea para un proyecto?

  2. ¿Donde empezar?

  3. ¿Cómo debería uno abordar este proyecto?

  4. ¿Algún buen recurso?

Gracias por adelantado.


  1. Es un buen proyecto para practicar habilidades de programación. Pero si quieres crear una biblioteca real que otras personas quieran usar, este es un proyecto que no quieres comenzar desde cero y desde cero ...

  2. Por dónde empezar: eche un vistazo a las soluciones que ya existen y piense qué es lo que desea hacer diferente. ¿Cómo se diferenciará tu proyecto de los demás?

  3. Recurso: SymPy es una biblioteca de Python para matemática simbólica


1. ¿Es esta una buena idea para un proyecto?

Sí; Esperaría que proporcionara una fuente interminable de trabajo interesante que, muy rápidamente, probará y ampliará sus poderes de programación.

2. ¿Por dónde empezar?

Respaldo las otras sugerencias de que deberías mirar el trabajo existente. SAGE es muy impresionante y si hubieras pedido mi consejo, te sugiero que primero escribas un sistema básico para hacer aritmética con números y símbolos; luego eche un vistazo a SAGE y escriba un módulo para extender el sistema; en otras palabras, conviértase en colaborador de algo más grande en lugar de tratar de hacerlo todo por su cuenta. Mire también Mathematica y Maple, Macsyma y Axiom. Los últimos 2 son gratuitos (creo) pero están bien documentados en línea y son una gran fuente de ideas y desafíos.

3. ¿Cómo debería uno abordar este proyecto?

Como uno se acerca a comer un elefante. Un bocado a la vez. Más en serio, creo que hay algunos problemas centrales, como la representación de expresiones, y algunas funcionalidades básicas (aritmética en polinomios) con las que puedes cortarte los dientes.

4. ¿Algún buen recurso?

Muchos y muchos. google para ''álgebra de la computadora'', ''reescritura de términos''. Echa un vistazo a lo que está disponible en Amazon. Y, si tiene acceso, consulte la biblioteca digital de ACM

Buena suerte.


Creo que este es un gran proyecto para un programador de cualquier nivel de habilidad. Es bastante fácil implementar una calculadora simbólica que sea lo suficientemente potente como para ser útil. Si continúa trabajando en amplitud, hay tantas características divertidas para agregar que puede ocuparse de ello durante mucho tiempo. Si eliges buscar profundidad, verás que las cosas pronto se ponen muy difíciles . Puedes desafiarte indefinidamente, si eso es lo que te gusta.

Hay muchos recursos geniales. Recomiendo el libro "Modern Computer Algebra" de zur Gathen y Gerhard, aunque en realidad está más preocupado por la aritmética en formas especiales (polinomios, enteros, matrices) que por la manipulación simbólica general. Cuando empiezas, en realidad te puede ayudar mejor si miras algún tutorial de Lisp o Scheme, porque matemática simbólica es conceptualmente muy simple de hacer en Lisp, y para construir un motor simbólico en Python tendrás más o menos que implementar un mini-Lisp como base.

Como han señalado otros, podría mirar SymPy y sympycore en busca de inspiración o algoritmos concretos. El código fuente de cualquiera de los proyectos es un poco complejo (pero ciertamente no demasiado difícil de aprender).

(Si puedo tapar un poco, hace un tiempo escribí un pequeño motor simbólico (como un proyecto de fin de semana, es muy pequeño y no he trabajado en él desde entonces). Implementa un motor simbólico genérico en aproximadamente 200 líneas de código , y luego hay 300 líneas de código que implementan la aritmética simbólica y el álgebra boleana simbólica, con una simplificación muy rudimentaria. Tal vez sea más fácil profundizar que SymPy. Pero todo lo que hay allí puede descubrirlo fácilmente y divertirse más. haciéndolo.)


Este blog pySym también podría interesarle para obtener ideas y novedades, y aprender lo que otros están haciendo con python y matemática simbólica.


La matemática simbólica es un proyecto divertido. Ya sea que alguien lo use o no, no parece importar en su pregunta, así que sumérjase.

He escrito dos de estos en los últimos años. Lo más genial fue uno para las cláusulas de SQL where: realizó algunas manipulaciones simbólicas triviales en SQL para incluir algunas condiciones Y adicionales. No es un "solucionador" o "optimizador" completo ni nada por el estilo, solo algunas manipulaciones simbólicas de cualquier cláusula SQL donde sea posible. El menos genial era para un depurador; hizo matemáticas complejas para calcular (simbólicamente) las compensaciones de la pila para las variables.

Empiezas definiendo clases para elementos de una expresión matemática: operandos, operadores, funciones, etc.

Debes decidir en qué manipulaciones deben participar estos objetos. Obtener un valor concreto para una expresión es fácil y obvio. Comience con el caso donde todas las variables tienen un enlace.

Luego maneje el caso donde algunas variables permanecen desatadas, y solo puede evaluar partes de la expresión.

Luego maneje la reorganización de una expresión en una forma canónica. Es decir, ha realizado una evaluación parcial y tiene Add( Variable(x), Add( Variable(x), Lit(3) ) ) . Necesita escribir reglas para transformar esto en Add( Multiply( Lit(2), Variable(x) ), Lit(3) ) .

Un ejercicio muy bueno es optimizar el paréntesis para que el resultado impreso tenga el menor paréntesis necesario para capturar el significado.

Hay muchas, muchas otras reglas de "transformación de la expresión" que todos aprendemos en la escuela para hacer manipulaciones algebraicas. Muchos de ellos.

En particular, reorganizar una ecuación para aislar una variable puede ser realmente difícil en algunos casos.

Hacer la transformación derivada es fácil, pero la integración simbólica es realmente difícil con una tonelada de casos especiales.

Lo básico es divertido. Dependiendo de lo lejos que quieras ir, se vuelve progresivamente más difícil.


Más en el camino de los recursos: SympyCore :

El objetivo del proyecto SympyCore es buscar nuevas soluciones de alto rendimiento para representar y manipular expresiones simbólicas en el lenguaje de programación Python, y probar nuevos modelos simbólicos para lograr un modelo simbólico fundamentalmente coherente y lo suficientemente general que sea fácil de extender a un Sistema de álgebra computarizada (CAS).


@Resources: Podría echar un vistazo a pythonica : este fue un intento de implementar un programa tipo Mathematica en Python (el código fuente está disponible para descargar).