sici_90
09-03-2015, 19:56
salve a tutti,
devo scrivere un progemaa che calcoli gli zeri di un polinomio con ilmetodo di bisezione.
questo è quello che ho fatto io:
#include <iostream>
#include<cmath>
using namespace std;
int main()
{float a, b, c, d, estrinf, estrsup, app, funzione1, funzione2, med, x, y;
cout<< "inserisci il coefficiente del termine di terzo grado"<<endl;
cin>>a;
cout<< "inserisci il coefficiente del temrine di secondo grado"<<endl;
cin>>b;
cout<< "inserisci il coefficiente del temrine di primo grado"<<endl;
cin>>c;
cout<< "inserisci il termine noto"<<endl;
cin>>d;
cout<< "inserisci l'estremo inferiore"<<endl;
cin>>estrinf;
cout<< "inserisci l'estremo superiore"<<endl;
cin>>estrsup;
cout<< "inserisci l'approssimazione"<<endl;
cin>>app;
if(estrinf>estrsup){
cout<< "gli estremi inseriti non sono corretti"<<endl;
}
else{
app=app;
med=(estrsup+estrinf)/2;
x=med;
y=estrinf;
funzione1=a*pow(x,3)+b*pow(x,2)+c*x+d;
funzione2=a*pow(y,3)+b*pow(y,2)+c*y+d;
while(funzione1<app||funzione1<-app){
if(funzione1*funzione2>0){
x=estrinf;
estrsup=estrsup;
}
else{
estrinf=estrinf;
x=estrsup;
}
}
cout<< "lo zero della funzione è : "<<x<<endl;}
return 0;}
il programma "funziona" nel senso che non dà errori.
se gli estremi non sono accettabili il programma si ferma. e fi qui tutto bn.
però se gli estremi sono accettabili mi dà come risultato sempre la media tra essi ... come se non leggesse il ciclo while.
potreste darmi una mano?
grazie!
devo scrivere un progemaa che calcoli gli zeri di un polinomio con ilmetodo di bisezione.
questo è quello che ho fatto io:
#include <iostream>
#include<cmath>
using namespace std;
int main()
{float a, b, c, d, estrinf, estrsup, app, funzione1, funzione2, med, x, y;
cout<< "inserisci il coefficiente del termine di terzo grado"<<endl;
cin>>a;
cout<< "inserisci il coefficiente del temrine di secondo grado"<<endl;
cin>>b;
cout<< "inserisci il coefficiente del temrine di primo grado"<<endl;
cin>>c;
cout<< "inserisci il termine noto"<<endl;
cin>>d;
cout<< "inserisci l'estremo inferiore"<<endl;
cin>>estrinf;
cout<< "inserisci l'estremo superiore"<<endl;
cin>>estrsup;
cout<< "inserisci l'approssimazione"<<endl;
cin>>app;
if(estrinf>estrsup){
cout<< "gli estremi inseriti non sono corretti"<<endl;
}
else{
app=app;
med=(estrsup+estrinf)/2;
x=med;
y=estrinf;
funzione1=a*pow(x,3)+b*pow(x,2)+c*x+d;
funzione2=a*pow(y,3)+b*pow(y,2)+c*y+d;
while(funzione1<app||funzione1<-app){
if(funzione1*funzione2>0){
x=estrinf;
estrsup=estrsup;
}
else{
estrinf=estrinf;
x=estrsup;
}
}
cout<< "lo zero della funzione è : "<<x<<endl;}
return 0;}
il programma "funziona" nel senso che non dà errori.
se gli estremi non sono accettabili il programma si ferma. e fi qui tutto bn.
però se gli estremi sono accettabili mi dà come risultato sempre la media tra essi ... come se non leggesse il ciclo while.
potreste darmi una mano?
grazie!