Bonjour,
Je ne sais pas trop sur quel forum poster mon sujet, donc je le poste ici puisque je programme en C++.
Je cherche à écrire un code capable de lire et évaluer non pas une expression arithmétique (ça je sais faire), mais une expression opératorielle, c'est à dire une expression du genre
H=Sum{i,1,3}(4*(C[i]+A[i])*(C[i]+3*A[i])+5)
dans laquelle la notation "Sum{i,1,3}" représente la somme sur l'indice i de 1 à 3, et C[i] et A[i] sont respectivement des operateurs d'incrémentation et de décrémentation de la composante i d'un vecteur. H est donc un opérateur destiné à agir sur un vecteur.
Ce que je voudrais faire, c'est un programme qui affiche le développement de l'expression, c'est à dire pour notre example:
1 2 3 4 5
|
H = Sum{i,1,3}(4*(C[i]+A[i])*(C[i]+3*A[i])+5)
= 4*C[1]C[1]+12*C[1]A[1]+4*A[1]C[1]+12*A[1]A[1]
+ 4*C[2]C[2]+12*C[2]A[2]+4*A[2]C[2]+12*A[2]A[2]
+ 4*C[3]C[3]+12*C[3]A[3]+4*A[3]C[3]+12*A[3]A[3]+15 |
J'ai réussi à écrire un code qui construit un arbre binaire pour cette expression, c'est quasiment pareil que pour les arbres arithmétiques. Ce qui me manque c'est une méthode de lecture de l'arbre qui me permette d'afficher le développement de l'expression.
Quelqu'un a-t-il une idée?
(Si vous vous demandez à quoi ça sert, c'est pour écrire un algorithme de résolution de l'équation de Schrödinger pour la Mécanique Quantique).
Partager