ça marche http://ben.lolopage.org/bidouille/dichotomie.exe
si qq'un a une idée de ce que j'ai fait de faux :
Code :
- #include <iostream.h>
- #include <math.h>
- double Fonction (double y)
- {
- y=y+3; /* y=atan(y)+atan(y+1)+atan(y-1)-3,14/2 */
- return y;
- }
- void main ()
- {
- /*pourtant l'ancienne config marquait 0.81... au lieu de 0.0137
- avec a=-10 et b=13*/
- double a,b,m,f,prec;
- cout<<Fonction(1.5)<<endl; /*juste pour voir que l'ordi sait faire le calcul */
- cout<<"veuillez rentrer les bornes de la fonction"<<endl<<"a:"<<endl;
- cin>>a;
- cout<<"b:"<<endl;
- cin>>b;
- cout<<"precision"<<endl;
- cin>>prec;
- do
- {
- m=((sqrt(b*b)+sqrt(a*a))/2.0)+a;
- f=(Fonction(m))*(Fonction(a));
- /*cout<<"Fonction(m):"<<Fonction(m)<<endl<<"Fonction(a):"<<Fonction(a)<<endl;
- cout<<"Resultante:"<<f<<endl; */
- cout<<a<<"***"<<m<<"***"<<b<<"***"<<f<<"***";
- if (f<0)
- {
- b=m;
- ///cout<<"b:"<<b<<endl;
- }
- else if (f==0)
- {
- a=b=m;
- break;
- }
- else
- {
- a=m;
- //cout<<"a:"<<a<<endl;
- }
- }
- while ((sqrt((b-a)*(b-a)))>prec);
- cout<<"l'intervalle ou est compris l'ordonee de 0 est de :"<<endl<<"a:"<<a<<endl<<"b:"<<b<<endl;
- }
|
quand je mets la fonction atan et que je la tatte à 1.5 j'obtiens 1.066 au lieu de 149.5 ( à la calculette )
Aidez-moi pleaz
Message édité par grosbin le 17-06-2004 à 19:54:27