弦截法中,函数各种嵌套调用,例题中所给的一元三次方程是给定的,系数定好的,那么假如我希望一元三次方程的系数是由自己输入的,但调用的函数不是不能存的么,写在主函数里,那后面的 f 函数好像也用不到了,假如 f 函数再调用一个“定系数的函数”,总不能每次计算都输入一次吧。。。
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double f(double);
double xpoint(double,double);
double root(double,double);
int main(){
double x1,x2,f1,f2,x;
do{
cout<<"input x1,x2:";
cin>>x1>>x2;
f1=f(x1);
f2=f(x2);
}while(f1*f2>=0);
x=root(x1,x2);
cout<<setiosflags(ios::fixed)<<setprecision(7);
cout<<"A root of equation is"<<x<<endl;
return 0;
}
double f(double x){ //这里能输入么,或者再调用一个函数。
double y;
y=x*x*x-5*x*x+16*x-80;
return y;
}
double xpoint(double x1,double x2){
double y;
y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
return y;
}
double root(double x1,double x2){
double x,y,y1;
y1=f(x1);
do{
x=xpoint(x1,x2);
y=f(x);
if(y*y1>0){
y1=y;
x1=x;
}
else
x2=x;
}while(fabs(y)>=0.0000001);
return x;
}