Projet de
Programmation Orientée Objet
2011-212
Calcul symbolique d'expressions
arithmétiques
Ce projet doit
être réalisé en binôme.
Description :
Le projet consiste à proposer à l'utilisateur un
certain nombre d'opérations symboliques sur des expressions
arithmétiques avec
variables et constantes dont voici quelques exemples :
(2*x^2+3*x+4)*(y+1)
cos(x)*sin(2*y)
a*x^2
où x, y sont des variables et a est une constante.
Le programme devra permettre :
de saisir une expression arithmétique au clavier
(indication : Pour simplifier l'analyse syntaxique de l'expression, l'expression pourra être donnée en notation polonaise inverse),
d'afficher une expression arithmétique
(indication : On pourra tenir compte de la priorité des opérateurs pour éviter d'afficher des parenthèse inutiles),
d'évaluer une expression arithmétique étant donnée une valeur pour chaque variable
(ex : pour x = 0 et y = 0, l'expression (2*x^2+3*x+4)*(y+1) vaut 4),
de calculer la dérivée partielle par rapport à une variable
(ex : d(x^2+y)/dx = 2*x)
(indication : On devra appliquer un certain nombre de règles de réécriture qui traduisent des formes générales de dérivation comme par exemple, (uv)' = u'v+uv'),
de simplifier une expression arithmétique
(ex : (a*1+0*x)*(x)+(a*x)*(1) → 2*a*x)
(indication : On utilisera par exemple le fait que 0 est un élément neutre pour l'addition, 1 est un élément neutre pour la multiplication ... On pourra mettre l'expression sous une forme canonique).
On pourra réaliser un programme exécutable en mode console ou une applet offrant une interface graphique.
Rendu :
On devra réaliser un rapport dactylographié de quelques pages (10 maxi) comportant notamment :
une partie montrant comment installer, compiler et exécuter le programme,
un diagramme de classes pour présenter les classes et leurs relations,
une définition de la grammaire des expressions arithmétiques considérées,
les règles de dérivation et de simplification utilisées,
des exemples illustrant les possibilités de l'outil.