请问c++如何用二分法求方程f(x)=12x^2+7x+1的根? 谢谢!
1个回答
展开全部
#include<iostream>
using namespace std;
class CaculateX{
int a;
int b;
int c;
public:
CaculateX(int _a,int _b,int _c){
a=_a;
b=_b;
c=_c;
}
float getValue(float value)
{
return a*value*value+b*value+c;
}
bool compare(float min,float max){
float minV=getValue(min);
float maxV=getValue(max);
if(minV*maxV>0) return false;
else return true;
}
double get_divide(float min,float max){
return (min+max)/2;
}
double get_result(float &n,float &m){
double d2=get_divide(n,m);
while(getValue(d2)>0.0000000000001){
if(getValue(n)*getValue(d2)<0) {
m=d2;
d2=get_divide(n,d2);
}
if(getValue(m)*getValue(d2)<0){
n=d2;
d2=get_divide(d2,m);
}
}
return d2;
}
};
int main(){
CaculateX x(12,7,1);
float min,max;
cin>>min>>max;
while(!x.compare(min,max)){
cout<<"范围不对,请重新输入:";
cin>>min>>max;
}
cout<<x.get_result(min,max);
}
思路就是这样。
无限逼近,只能得到近似。
输入 -0.3 0得到-0.25;
输入-0.5 -0.3得到-0.325 按理说应该近似-0.33哈哈。
进度有待提高。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询