dans le but de faire un projet de modélisation physique en c++, j'ai
besoin de me faire une petite biblio de fonctions/objets mathématiques
j'ai notamment besoin de coder tout ce qui est recherche d'un 0 d'une
fonction, résolutions d'équation différentielles etc...
à la base de tout ça se trouve l'expression mathématique a utiliser...
j'aimerai savoir si quelques un d'entre vous ont fait ce genre de truc,
comment "reconnaitre" une fonction passée par un utilisateur ?
faut-il demander une chaine et la parser puis créer des Objets en
conséquence ?
par exemple "3*x^2+2*x" serait reconnu en tant que polynome et il y
aurai création d'un objet "polynome" qui serait facilement manipulable
par la suite...
en revanche pour des expression bcp plus compliquées et courantes en
physique, je sèche complètement exemple :
3*ln(sqrt(x))*exp(-x^4)
ouah rien que ça... c'est assez immonde et j'ai pas vraiment d'idée !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
kanze
Nicolas Aunai wrote in message news:...
[...]
j'aimerai savoir si quelques un d'entre vous ont fait ce genre de truc, comment "reconnaitre" une fonction passée par un utilisateur ?
C'est ce que fait le compilateur, en fin de compte, quand tu lui files une expression dans ton programme.
faut-il demander une chaine et la parser puis créer des Objets en conséquence ?
C'est la solution classique. (Historiquement, il y a eu d'autres représentations, mais un arborescence d'objets me semble la solution la plus appropriée, et la plus répandue, aujourd'hui.)
par exemple "3*x^2+2*x" serait reconnu en tant que polynome et il y aurai création d'un objet "polynome" qui serait facilement manipulable par la suite...
C'est un peu limité. Les polynomes ne sont qu'un cas particulier.
en revanche pour des expression bcp plus compliquées et courantes en physique, je sèche complètement exemple :
3*ln(sqrt(x))*exp(-x^4)
Une arborescence. Les variables et les constantes constituent les « feuilles » ; les opérations les vertices intérieur. On aurait donc quelque chose du genre :
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Nicolas Aunai <nicolas.aunai@free.fr> wrote in message
news:<mesnews.f4b77d41.e8536b7b.52.1437@free.fr>...
[...]
j'aimerai savoir si quelques un d'entre vous ont fait ce genre de
truc, comment "reconnaitre" une fonction passée par un utilisateur ?
C'est ce que fait le compilateur, en fin de compte, quand tu lui files
une expression dans ton programme.
faut-il demander une chaine et la parser puis créer des Objets en
conséquence ?
C'est la solution classique. (Historiquement, il y a eu d'autres
représentations, mais un arborescence d'objets me semble la solution la
plus appropriée, et la plus répandue, aujourd'hui.)
par exemple "3*x^2+2*x" serait reconnu en tant que polynome et il y
aurai création d'un objet "polynome" qui serait facilement manipulable
par la suite...
C'est un peu limité. Les polynomes ne sont qu'un cas particulier.
en revanche pour des expression bcp plus compliquées et courantes en
physique, je sèche complètement exemple :
3*ln(sqrt(x))*exp(-x^4)
Une arborescence. Les variables et les constantes constituent les
« feuilles » ; les opérations les vertices intérieur. On aurait donc
quelque chose du genre :
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
j'aimerai savoir si quelques un d'entre vous ont fait ce genre de truc, comment "reconnaitre" une fonction passée par un utilisateur ?
C'est ce que fait le compilateur, en fin de compte, quand tu lui files une expression dans ton programme.
faut-il demander une chaine et la parser puis créer des Objets en conséquence ?
C'est la solution classique. (Historiquement, il y a eu d'autres représentations, mais un arborescence d'objets me semble la solution la plus appropriée, et la plus répandue, aujourd'hui.)
par exemple "3*x^2+2*x" serait reconnu en tant que polynome et il y aurai création d'un objet "polynome" qui serait facilement manipulable par la suite...
C'est un peu limité. Les polynomes ne sont qu'un cas particulier.
en revanche pour des expression bcp plus compliquées et courantes en physique, je sèche complètement exemple :
3*ln(sqrt(x))*exp(-x^4)
Une arborescence. Les variables et les constantes constituent les « feuilles » ; les opérations les vertices intérieur. On aurait donc quelque chose du genre :
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16