Salut
j'ai pas eu le temps de lire ton programme pour retrouver ton erreur parceque je suis tres oqp en meme tps.
Mais je peux te conseiller, tu peux utiliser la methode de dichotomie pour retrouver le zero de ta fonction.Elle est dejà interessante parceque ta fonction f=(1/2) - (x^2) est positive en a=0 et et negative en b=1. Alors tu peux utiliser la methode de dichotomie parceque la condition f(a)*f(b)<0 est respectée.Donc à chaque iteration tu divisera ton intervalle [a, b] en deux parties et tu gardera que la partie ou la condition f(a)*f(b)<0 est respectée.
Pour etre plus clair tu fais c=(a+b)/2 et tu as tes deux intervalles [a c] et [c b]. tu verifie si f(a)*f(c)<0 alors tu es sure de trouver ton zero dans l'intervalle [a c] dc tu redui ton intervalle en disant b=c. si la condition f(a)*f(c)<0 n'est pas vrai alors le zero de ta fonction se trouve plustot dans l'intervalle [c b] , donc tu fais a=c .
Ainsi tu fais une boucle qui s'arretera quand ton intervalle [a b] sera tres petit. (b-a<precision ); Ta fonction ressemblera à ce qui suit .
#include <stdio.h>
#include <math.h>
double dichotomie (double a, double b, double eps,
double (*f)(double))
{
double e,em,c,fa,fb,fc;
fa=f(a); /* valeurs de la fonction */
fb=f(b);
e=b-a; /* longueur intervalle initial */
em=eps*(fabs(a)+fabs(b));
while (e>em) { /* condition de convergence */
c=(a+b)/2.0; /* milieu intervalle courant */
fc=f(c);
if (fa*fc<0.0) { /* [a,b] --> [a,c] */
b=c; fb=fc;
}
else { /* [a,b] --> [c,b] */
a=c; fa=fc;
}
e=b-a; /* nouvelle longueur */
em=eps*(fabs(a)+fabs(b));
}
return c; /* c est la solution cherchée */
}
Bnne chance
Bobby