【问题描述】
用二分法求方程2x2-4x2+3x-6=0;
二分求方程采用的是逐步逼近法,由于方程在坐标系上是一条连续的曲线,且最终解f(x)=0,故方程曲线与x轴相交处即为方程解。
//用二分法求方程的根
#include<iostream>
using namespace std;
int main()
{
float x0,x1,x2,fx0,fx1,fx2;
do{
cin>>x1>>x2;
fx1=x1*((2*x1-4)*x1+3)-6;//秦九昭算术表示法
fx2=x2*((2*x2-4)*x2+3)-6;
}while(fx1*fx2>0);//必须输入正确的值,(所选区间的函数具有单调性)
do{
x0=(x1+x2)/2;
fx0=x0*((2*x0-4)*x0+3)-6;
if(fx0*fx1<0)取互为相反数的那一段
{
x2=x0;
fx2=fx0;
}
else
{
x1=x0;
fx1=fx0;
}
}while(fabs(fx0)>1e-5);
cout<<x0;
return 0;
}