求下面一个方程的根:f(x)=x^3-5x^2+10x-80=0,若求出的根是a,则要求|f(a)|<=10^-6。
由题意可以看出f(0)<0且f(100)>0且单调递增。
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
double eps=1e-6;
double f(double x){
return x*x*x-5*x*x+10*x-80;
}
int main(){
double root,x1=0,x2=100,y;
root=x1+(x2-x1)/2;
int triedtimes=1;
y=f(root);
while(fabs(y)>eps){
if(y>0)
x2=root;
else
x1=root;
root=x1+(x2-x2)/2;
y=f(root);
triedtimes++;
}
printf("%.8f\n",root);
printf("%d",triedtimes);
return 0;
}