trouver f(x)=0 dichotomie
Bonjour j'ai fais une fonction qui cherche f(x)=0 par dichotomie pour un polynôme. Mais j'ai l'impression que les affectations après les condition ne s’effectue pas car pour f(x)=x+1 le programme renvoie toujour -49 pour resultatXMin et 51 pour resultatXMax jusqu'à atteindre j=0 . J'ai beau faire tourner le programme à la main je ne voie pas l'erreur. Merci d'avance. Aussi j'ai essayé avec des tableau le programme fonctionne...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| double Polynome::chercheRacinePolynome()
{
int j(100);
double xMin(-50),xMax(50),x,resultat(0),resultatXMin,resultatXMax;
do
{
j--;
x=(xMin+xMax)/2;
resultat=calculPolynomePdeX(x);
resultatXMin=calculPolynomePdeX(xMin);
resultatXMax=calculPolynomePdeX(xMax);
if(fabs(resultat)>0.0000000001 )
{
if(resultatXMin*resultat<=0) resultatXMax = x;
else if(resultatXMax*resultat<=0) resultatXMin = x;
}
}while(((fabs(resultat)>0.0000000001)&& (xMin < xMax) ) && (j > 0));
if(j == 0) return 0;
return x;
} |
la fonction calculPolynomePdeX si nécessaire
Citation:
Envoyé par c++
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| double Polynome::calculPolynomePdeX( double x)
{
double resultat(0);
unsigned short i;
for(i=0;i<=m_degre;i++)
{
resultat = resultat + m_polynome[i]*puissance(x,i); /* x étant donné par l'untilisateur. On applique juste la formule P(x) = ...*/
}
return resultat;
} |