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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| #include <stdio.h>
#include <stdlib.h>
#include <math.h>
double resoudre()
{
double a,b,c,d,e,borne_inf,borne_sup,precision;
double x;
double resultat;
double m=(borne_inf+borne_sup)/2;
int nbr_result;
resultat=0;
nbr_result=0;
a=1;
b=1;
c=1;
d=3;
e=1;
borne_inf=-1000;
borne_sup=1000;
precision=1e-10;
/* ici je suppose que la fonction f est CROISSANTE sur [a, b]. je te laisse le cas ou f est decroissante (tu peux poser g = -f) */
while(fabs(borne_inf-borne_sup)>precision)
{
if((a*(pow(borne_inf,4))+b*(pow(borne_inf,3))+c*(pow(borne_inf,2))+d*borne_inf+e)*(a*(pow(m,4))+b*(pow(m,3))+c*(pow(m,2))+d*m+e)<0) /* la racine est dans l'intervalle [a, m] */
{
borne_sup=m;
m=(borne_inf+borne_sup)/2.;
}
else /* la racine est dans l'intervalle [m, a] */
{
borne_inf=m;
m=(borne_inf+borne_sup)/2.;
}
printf("%lf\n",m);
}
}
int main ()
{
resoudre();
system("PAUSE");
return 0;
} |
Partager