请问c++如何用二分法求方程f(x)=12x^2+7x+1的根? 谢谢!

 我来答
上_善_下_流
2017-03-19 · TA获得超过677个赞
知道小有建树答主
回答量:358
采纳率:0%
帮助的人:145万
展开全部
#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哈哈。

进度有待提高。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式