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