Programme d'évaluation d'une fonction en un point [Fermé]

Signaler
Messages postés
92
Date d'inscription
lundi 25 février 2013
Statut
Membre
Dernière intervention
2 décembre 2016
-
Messages postés
3644
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
-
Bonjour,

Je cherche à faire une fonction qui permet d'évaluer une fonction en un point.
Par exemple, l'utilisateur entre sa fonction f(x)= 3x + exp(3x+4)
et il dit qu'l veut l'évaluer au point x = 2

j'ai pensé faire quelque chose dans ce genre là
1 - somme
2 - différence
3- produit
4 - quotient
5- composée de fonctions

et les fonctions
6 - constante
7 - polynome
8 - exponentielle
ect ...

Mais je ne vois pas comment faire ... surtout avec les composées de fonctions.

Merci

1 réponse

Messages postés
3644
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
879
En cherchant un petit peu,
DuckDuckGo est ton ami
j'ai trouvé ceci:
A C++ expression parser By Jos de Jong, December 2007, updated Januari 2012 Licensed under the Apache License, Version 2.0
En modifiant deux-tros lignes dans main.cpp, cela compile sous g++ (g++ (Debian 6.2.0-13) 6.2.0 20161109)
et g++-4.4. Juste un avertissement , voir plus bas.
A l'exécution , je n'ai pas tout testé, mais Ctrl-D semble faire cycler le programme. Je crois qu'il y a un tout petit peu de travail d'amélioration (prise encompte des caractères blancs, white spaces) et de portabilité.

Exemple:
johand@osiris: ~/src/math_parser $ g++ -Wall -o parser *cpp
error.cpp: In constructor ‘Error::Error(int, int, int, ...)’:
error.cpp:46:29: warning: second parameter of ‘va_start’ not last named argument [-Wvarargs]
va_start(args, msg_desc);

johand@osiris: ~/src/math_parser $ ./parser
Enter an expression an press Enter to calculate the result.
Enter an empty expression to quit.

> x = 1
Error: Unknown variable x (col 1)
> Error: Value expected (col 1)
> Ans = 1
> x=1
Ans = 1
> atan(x)*4
Ans = 3.14159

Gates gave ^W  sold  you the windows.
GNU gave us the whole house.(Alexandrin)