Pregunta

Estoy sumamente interesado en las matemáticas y la programación y planificación para iniciar matemáticas simbólica Proyecto desde cero .

  1. ¿Es esta una buena idea del proyecto?

  2. Por dónde empezar?

  3. ¿Cómo debería uno de los enfoques de este     proyecto?

  4. Cualquier buenos recursos?

Gracias de antemano.

¿Fue útil?

Solución

  1. Es un buen proyecto para practicar las habilidades de programación. Pero si desea crear una biblioteca real que otras personas van a querer utilizar este es un proyecto que no quiere empezar desde cero y allone ...

  2. Por dónde empezar: Tener un vistazo a las soluciones que ya están ahí fuera y pensar en qué es lo que desea hacer diferente. ¿Cómo será su proyecto diferente de los demás?

  3. Recurso: sympy es una biblioteca de Python para las matemáticas simbólicas

Otros consejos

1.Is esta buena idea del proyecto?

Sí; Yo esperaría que proporcionan una fuente inagotable de trabajo interesante, que muestren, con bastante rapidez, prueba y extender sus poderes de programación.

2. Cuando empezar?

I segundas las demás indicaciones que usted debe buscar en el trabajo existente. SAGE es muy impresionante y si se había pedido consejo sugeriría que en primer lugar, escribir un sistema básico para hacer aritmética con números y símbolos; a continuación, echar un vistazo a SAGE y escribir un módulo para extender el sistema, en otras palabras se convierten en un contribuyente a algo más grande en lugar de intentar hacerlo todo por su cuenta. Mira también en Mathematica y Maple, y Macsyma axioma. Estos últimos son libres 2 (creo) pero todos están bien documentados en línea y una gran fuente de ideas y retos.

3.How debe uno acercarse a este proyecto?

Como era de acercarse a comer un elefante. Un bocado a la vez. Más en serio, creo que hay algunas cuestiones básicas, como la representación de expresiones y alguna funcionalidad básica (aritmética de polinomios), que se podía iniciar su carrera con.

4.Any buenos recursos?

Hay mucho, mucho. Google para 'álgebra computacional', 'reescritura término'. Echar un vistazo a lo que está disponible en Amazon. Y, si tiene acceso, echa un vistazo a la biblioteca digital ACM

Buena suerte.

matemáticas simbólico es un proyecto divertido. Sea o no cualquiera lo utiliza no parece tener importancia en su pregunta, así que sumérgete.

He escrito dos de ellos en los últimos años. El más fresco fue uno de cláusulas WHERE de SQL - se hicieron algunas manipulaciones simbólicas triviales sobre el SQL a veces en algunos adicionales y condiciones. No es un completo "solucionador" o "optimizador" ni nada, sólo unas pocas manipulaciones simbólicas de cualquier cláusula WHERE de SQL posible. El uno menos fresco era para un depurador; lo hizo matemáticas complejas para trabajar (simbólicamente) apilar las compensaciones para las variables.

Se empieza por la definición de clases de elementos de una expresión matemática -. Operandos, operadores, funciones, etc.

Usted tiene que decidir qué manipulaciones estos objetos tienen que participar. Conseguir un valor concreto para una expresión es una tarea fácil y obvio. Comenzar con el caso en el que todas las variables tienen un enlace.

A continuación, manejar el caso en que algunas variables permanecen sin unir, y sólo se puede evaluar partes de la expresión.

A continuación, manejar la reordenación de una expresión en una forma canónica. Es decir, que haya hecho una evaluación parcial y tienen Add( Variable(x), Add( Variable(x), Lit(3) ) ). Usted tiene que escribir las reglas para transformar esto en Add( Multiply( Lit(2), Variable(x) ), Lit(3) ).

Un ejercicio muy fresco está optimizando el paréntesis de modo que la salida impresa tiene el paréntesis menor cantidad necesaria para captar el significado.

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

En particular, la reordenación de una ecuación para aislar una variable puede ser muy difícil en algunos casos.

Si lo hace la transformación derivada es fácil, pero la integración simbólica es muy, muy difícil con un montón de casos especiales.

Los fundamentos son divertidos. En función de lo lejos que quiere ir, que se hace cada vez más difícil.

@Resources: usted podría echar un vistazo a pythonica - esto fue un intento de implementar un Mathematica programa de tipo en Python (código fuente está disponible para su descarga).

pySym Blog también compraron también para obtener ideas y entrantes, y aprender lo que otros están haciendo con pitón y matemáticas simbólica.

Más de la manera 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 para probar nuevos modelos simbólicos a achive modelo simbólico fundamentalmente constante y suficientemente general que sería fácil extenderse a una Computer Algebra System (CAS).

Creo que este es un gran proyecto para un programador de cualquier nivel de habilidad. Es bastante fácil de hacer aplicar una calculadora simbólica que es lo suficientemente potente como para ser útil. Si continúa trabajando en anchura, hay tantas características de la diversión para añadir que se puede ocupar usted mismo con él durante mucho tiempo. Si se elige el camino para la profundidad, se encuentra que las cosas pronto se obtienen muy duro . Usted puede ponerse a prueba por tiempo indefinido, si eso es lo que te gusta.

Hay muchos grandes recursos. Recomiendo el libro "Modern Computer Algebra" por zur Gathen y Gerhard, aunque en realidad es más preocupado con la aritmética en formas especiales (polinomios, números enteros, matrices) que la manipulación simbólica general. Cuando estás empezando, puede ser en realidad una mejor ayudó al observar algunas Lisp o Scheme tutorial, porque las matemáticas simbólico es conceptualmente muy sencillo de hacer en Lisp, y para construir un motor simbólica en Python usted más o menos tiene que aplicar un mini-Lisp como base.

Como otros han señalado, usted podría mirar a sympy y SympyCore de inspiración o algoritmos concretos. El código fuente para ninguno de los proyectos es un poco complejo (pero ciertamente no es demasiado difícil de aprender de).

(Si se me permite enchufar un poco, me escribió un pequeño motor simbólico hace un tiempo (como un proyecto de fin de semana - es muy pequeña y no he trabajado en él desde entonces) implementa un motor simbólica genérica en alrededor de 200 líneas de código, y luego hay 300 líneas de código de aplicación simbólica. la aritmética y el álgebra de Boole simbólica, con una cierta simplificación muy rudimentaria. Quizás más fácil cavar en que sympy. Pero todo en que hay cosas que fácilmente se podría descubrir por sí mismo, y puede tener más divertido hacerlo.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top