#include "stdio.h"
#include "conio.h"
#include "math.h"
#define MaxK 1000
#define EPS 0.5e-8
double f(double x) {return x*x*x - x - 1 ;}
void main()
{
double x0 = 1, x1 = 2;
int ZhengGe(double (*f)(double) , double &x0 ,double &x1,double eps);
if(ZhengGe(f,x0,x1,EPS) == 1 )
printf("the root is x=%f\n\n",x1);
else printf("the method is fail!");
}
int ZhengGe(double (*f)(double) , double &x0 ,double &x1,double eps)
{
int k = 0;
double xk;
printf("k\t\t xk\t f(xk)\n");
printf("--------------------------------------\n");
xk = x1 - (f(x1)*(x1 - x0))/(f(x1) - f(x0));
printf("%d\t\t%f %f\t\t\t\t\t\t",k,x0,f(x0));
k = k+1;
printf("%d\t\t%f %f\t\t\t\t\t\t",k,x1,f(x1));
k = k+1;
printf("%d\t\t%f %f\t\t\t\t\t\t",k,xk,f(xk));
do
{
k++;
x0 = x1;
x1 = xk;
xk = x1 - (f(x1)*(x1 - x0))/(f(x1) - f(x0));
printf("%d\t\t%f %f\t\t\t\t\t\t",k,xk,f(xk));
}while(fabs( xk - x1 ) > eps );
printf("--------------------------------------\n");
x1 = xk;
return 1;
}