mathématiques symbolique est un projet amusant. Que quelqu'un l'utilise ou non ne semble pas avoir d'importance dans votre question, alors plongez.
J'ai écrit deux d'entre eux au fil des ans. Le plus cool était un pour SQL où clauses - il a fait quelques manipulations symboliques triviales sur le SQL pour replier certaines conditions ET supplémentaires. Pas un "solveur" complet ou "optimiseur" ou quoi que ce soit, juste quelques manipulations symboliques de tout SQL où clause possible. Le moins cool était pour un débogueur; il a fait des calculs complexes pour calculer (offensivement) des offsets pour les variables.
Vous commencez par définir des classes pour les éléments d'une expression mathématique - opérandes, opérateurs, fonctions, etc.
Vous devez décider quelles manipulations ces objets doivent participer.Obtenir une valeur concrète pour une expression est une chose facile et évidente. Commencez par le cas où toutes les variables ont une liaison.
Puis gérer le cas où certaines variables restent non liées, et vous pouvez seulement évaluer des parties de l'expression.
Puis gérer réorganiser une expression dans une forme canonique. Par exemple, vous avez effectué une évaluation partielle et avez Add(Variable(x), Add(Variable(x), Lit(3)))
. Vous devez écrire des règles pour transformer ceci en Add(Multiply(Lit(2), Variable(x)), Lit(3))
.
Un exercice très cool optimise la parenthèse pour que la sortie imprimée ait le moins de parenthèses nécessaire pour capturer la signification.
Il y a beaucoup, beaucoup d'autres règles de "transformation d'expression" que nous apprenons tous à l'école pour faire des manipulations algébriques. Beaucoup d'entre eux.
En particulier, réarranger une équation pour isoler une variable peut être très difficile dans certains cas.
Faire la transformation dérivée est facile, mais l'intégration symbolique est vraiment, vraiment difficile avec une tonne de cas particuliers.
Les bases sont amusantes. Selon la distance que vous voulez aller, il devient progressivement plus difficile.
Une autre option de bibliothèque est d'utiliser Sage (http://www.sagemath.org/) –