#include<iostream>
#include<math.h>
using namespace std;
int main()
{
float a=-10,b=10,x,f1,f2,f;
f1=(((2*a-4)*a+3)*a)-6;
f2=(((2*b-4)*b+3)*b)-6;
do
{
x=(a+b)/2;
f=(((2*x-4)*x+3)*x)-6;
if(f*f1<0)
{
b=x;
f2=f;
}else
{
a=x;
f1=f;
}
}while(fabs(f)>=1e-6);
printf("%-6.2f\n",x);
return 0;
}
注:f*f1<0,即在左边区间异号存在零点,反之,左边没有右边有