Salut,
- écrire un parser d'expressions formelles
- utiliser un arbre binaire pour représenter l'expression parsée
- écrire une fonction qui convertit un arbre en expression (qui affiche l'arbre)
- écrire une fonction qui dérive un noeud de l'arbre, genre
la dérivée d'une constante (comme 42) est 0,
la dérivée de x (une variable) est 1,
la dérivée de a(x) + b(x) est dérivée de a + la dérivée de b, donc la dérivée d'un sous-arbre arbre de racine + est la dérivée du sous arbre gauche + la dérivée du sous arbre droite. - écrire une fonction qui dérive un arbre,
- écrire éventuellement une fonction de simplification d'arbre : simplifier les noeud du type a+0 en a, 0*a en 0, remplacement des opérations sur des constantes par le résultat (par exemple, remplacer 2*3 par 6), etc - tu peux aussi écrire la fonction de simplification à part (ce sera peut-
Au niveau du modèle de classe :
- des noeuds de type constante (1, 2, 3...40, 100...)
- des noeuds de type "variable" (x)
- des noeuds de type opérateurs
- des noeuds de type fonction (si tu as besoin d'aller jusqu'au là dans les expressions formelles), comme sin par exemple
Indices pour le parsing :
- les parenthèses constituent des niveaux dans l'arbre
- quand il n'y a pas de parenthèses, c'est la priorité des oéprateurs qui compte pour déterminer les parenthèses
- lorsqu'il n'y a pas de priorité, on peut pousser le sous arbre de gauche ou de droite vers le bas (c'est juste un choix) :
Par exemple .
Dont l'arbre est :
+
/ \
+ 1
/ \
* x
/ \
3 ^
/ \
x 2
Dont l'arbre dérivé est :
+
/ \
+ 0
/ \
* 1
/ \
3 *
/ \
2 x
simplifié en
Soit la dérivée, affichage en infixé : 6*x + 1. éventuellement ajouter les simplifications d'usage pour que ça affiche 6x+1
Partager