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 c++ : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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;
}