Zadanie: napisz program rozwiązujący równanie exp(x)+(x)=0 metodą podziału połówkowego.
Język: C++.
Użyte dyrektywy: iostream, stddef.h, stdio.h, cmath.
int main(){
cout<<"Szukam rozwiązania exp(x)+x=0 w przedziale -10 i 10."<<endl;
double exp(double x);
cout<<"e^(10)+10 ="<<exp(10)+(10)<<endl;
cout<<"e^(-10)+(-10)="<<exp(-10)+(-10)<<endl<<endl;
cout<<"Wynik w przedziale -10 i 0 jest bliższy 0."<<endl;
double x=-10, a, wynik;
a=exp(x)+(x);
return 0;
}
Brakuje mi kodu pod a=exp(x)+(x);. Bez pętli wygląda to tak:
cout<<"e^(10)+10 ="<<exp(10)+10<<endl;
cout<<"e^(-10)+(-10)="<<exp(-10)+(-10)<<endl;
cout<<"e^(-5)+(-5)="<<exp(-5)+(-5)<<endl;
cout<<"e^(-2,5)+(-2,5)="<<exp(-2.5)+(-2.5)<<endl;
cout<<"e^(-1,25)+(-1,25)="<<exp(-1.25)+(-1.25)<<endl;
cout<<"e^(-0,625)+(-0,625)="<<exp(-0.625)+(-0.625)<<endl;
cout<<"e^(-0,3125)+(-0,3125)="<<exp(-0.3125)+(-0.3125)<<endl;
cout<<"e^(−0,9375)+(−0,9375)="<<exp(-0.9375)+(-0.9375)<<endl;
cout<<"e^(-0,46875)+(-0,46875)="<<exp(-0.46875)+(-0.46875)<<endl;
Pętla, która działa:
if(wynik!=a){
x=x/2;
wynik=exp(x)+(x);
cout<<wynik;
}
Pętla if nie jest właściwa, bo musiałabym ją powtórzyć określoną ilość razy. Teoretycznie nie wiem ile, praktycznie wiem, bo policzyłam. Potrzebuję pętli while, ale ta:
while(a<=-0.3125){
if(wynik!=a){
x=x/2;
wynik=exp(x)+(x);
cout<<a;
}
}
nie działa prawidłowo. Nie wiem dlaczego. Może ktoś wskazać mi błąd i podpowiedzieć jak go poprawić?