#include<iostream>
#include<fstream>
#include<math.h>
using namespace std;
#define e 0.1f //精度
float a1=0,a2,a3=4.0f,a4,c1,c2,ahead; //ahead为前一次a4的值
bool cycle_check;
//所知函数
float f(float x)
{
return (x*x-6.0f*x+3.0f);
}
//处理过程
bool process_func()
{
int check;
if(cycle_check==false)
a2=(a1+a3)/2.0f;
c1=(a2-a3)*(a2-a1)*(f(a3)-f(a1));
c2=(a3-a1)*(f(a2)-f(a1))-(a2-a1)*(f(a3)-f(a1));
if(c2!=0)
{
a4=(a1+a3-c1/c2)/2.0f;
if(cycle_check==true)
{
if((fabs(ahead-a4)<e)&&(fabs(f(ahead)-f(a4))<e))
check=1;
else check=0;
}
else check=0;
ahead=a4;
if(a4>a2&&f(a2)<f(a4)) a3=a4;
if(a4>a2&&f(a2)>=f(a4)) a1=a2,a2=a4;
if(a4<a2&&f(a2)>=f(a4)) a3=a2,a2=a4;
if(a4<a2&&f(a2)<=f(a4)) a1=a4;
}
else cout<<"c2为零!"<<endl;
if(check==1) return true;
else return false;
}
int main()
{
int counter=0;
bool v=false;
while(v!=true)
{
if(counter==0) cycle_check=false;
else cycle_check=true;
v=process_func();
counter++;
cout<<counter<<" "<<a1<<" "<<a3<<endl;
}
cout<<a4<<" "<<f(a4)<<endl;
return 0;
}