应用二分法求方程f(x)=0的根
f(x)=2 * x * x * x - 2 * x * x - 6 * x - 3用二分法求区间-10~10 的根;
问:为啥一一定要返回midlle,返回0就不正确了
#include<iostream>
using namespace std;
#include<math.h>
float f(float x)
{
return 2 * x * x * x - 2 * x * x - 6 * x - 3;
}
class funroot
{
private:
float left, right;
public:
funroot(float a, float b) { left = a;right = b; }
float root();
};
float funroot::root()
{
float left, right, middle, ym, yl, yr;
do
{
cout << "请输入左、右边界:" << endl;
cin >> left >> right;
yl = f(left);
yr = f(right);
} while (yl * yr > 0);
do
{
middle = (right + left) / 2;
ym = f(middle);
if (yr * ym > 0)
{
right = middle;
yr = ym;
}
else
{
left = middle;
yl = ym;
}
} while (fabs(ym) > 1e-6);
return middle;
cout << "\n方程的根是:" << middle << endl;
}
int main()
{
float left, right;
left = right = 0;
funroot A(left, right);
cout << "\n方程的根是:" << A.root() << endl;
return 0;
}