Bonjour,
Je souhaiterais savoir s'il existe en C++ une fonction qui permette de trouver directement le z�ro d'une fonction.
Je vous remercie par avance,
Cordialement.
Bonjour,
Je souhaiterais savoir s'il existe en C++ une fonction qui permette de trouver directement le z�ro d'une fonction.
Je vous remercie par avance,
Cordialement.
Bonjour,
En C++ uniquement, non, par contre, dans l'une des nombreuses biblioth�ques de math�matiques, certainement.
Regarde du cot� de boost, notamment Boost.Math
Bonjour,
Merci pour votre r�ponse.
J'ai regard� dans la biblioth�que Boost Math.
Je n'ai pas trouv� de fonction permettant de r�soudre une �quation, je suis cependant d�butante en C++.
Sachant que je souhaiterais que la fonction me rende une solution num�rique (donc non exacte), connaissez-vous un autre moyen de faire ?
Je vous remercie par avance,
Cordialement.
Et bien, programmer le calcul.
Certes, c'est bien de ne pas r�inventer la roue, mais vient un moment o� c'est plus rapide, et surtout plus formateur.
Quelle est ta situation pr�cise?
Dois-tu pouvoir d�terminer {x de R | f(x)=0} pour toute fonction f qu'on te donnerai?
Si oui, comment te la donnerait-on? par sa forme analytique (f(x)=2x�-1) ou par une fonction pr�cod�e?
Je voudrais rentrer la fonction par une forme analytique.
La fonction est :
f(x(k))=-x(k)*exp(-(x(k)+t)) +10.
Je voudrais trouver la valeur x(0) de x qui annule la fonction pour t=0.
Puis la valeur x(1) de x qui annule la fonction pour t=x(0).
Puis la valeur x(2) de x qui annule la fonction pour t=x(0)+x(1).
etc.
Je voudrais que les valeurs x(0), x(1) et x(2) soient num�riques avec une pr�cision de 15 chiffres apr�s la virgule.
Merci par avance.
Premi�rement, la pr�cision � 15 chiffres, ce n'est pas facilement possible. (cf le format flottant
Il faut te tourner vers des outils sp�cialis�s.
Enfin, n�gligeons ce d�tail.
Quand je disais la forme analytique, je voulais d�signer ceci (ou pire encore):
Commen�ons par le d�but, sais-tu comment t'y prendre math�matiquement parlant? Autrement dit, si tu n'avais qu'un crayon, que ferais-tu?
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 int main() { string equation = "f(x(k))=-x(k)*exp(-(x(k)+t)) +10"; cout << equation << " a pour zéro : " << search_zero(equation) << endl; return 0; }
Il ne faut pas oublier qu'un ordinateur est une calculette g�ante, super rapide, mais qui fais ce qu'on lui dit.
Et qu'un programme n'est qu'une mani�re de lui dire que faire.
La seule vraie limite d'un langage est: "Il n'est possible de programmer que ce qu'on peut expliquer."
tu cherches donc la solution de -x*exp(-(x+t)) +10 == 0
c'est-�-dire 10 = x * exp(-(x+t))
commence par ecrire une petite fonction:
Ton probl�me devient alors d'�crire la fonction double chercher_zero(double x, double t); qui devrait retourner le zero de f pour un x et un t donn�.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 double f(double x, double t) { return -x * exp(-(x+t)) +10; }
Pour l'usage futur, tu peux envisager ceci:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class exponentielle { private: double decalage; public: explicit exponentielle(double d) : decalage(d) {} double operator()(double x, double t) const { return -x * exp(-(x+t)) + decalage; } }; //exemple d'usage int main() { exponentielle e10(10); std::cout << " à t=0, f(4) = " << e10(4) << std::endl; }
Partager