/**************************************/
/*  Programa de Metodos Numericos     */
/*		   Newton_Rapshon;    */
/*      Para una funcion dada         */
/**************************************/

#include 
#include 
#include 

/************   Declaracion de Funciones  ***********/
void Lee_Datos(void);
double Funcion(double Xi);
double Derivada(double Xi);
double Segunda(double Xi);

double Xo;
float  Tolera;
int    Ciclos;

int main()

{
  double Fx;
  double Fdx;
  double F2dx;
  double Xn;
  float  Error = 1;
  int    Cont  = 0;

  Lee_Datos();

  printf("\n======================================================");
  printf("\n Ciclo    Xo       Fx         Fdx       Xn       Error");
  printf("\n======================================================");

  while (Error > Tolera && Ciclos > Cont)
	 {
	   Fx    = Funcion(Xo);
	   Fdx   = Derivada(Xo);
	   F2dx  = Segunda(Xo);
	   Xn    = Xo - (Fx / (Fdx-(F2dx*Fx)/(2*Fdx)));
	   Error = fabs( (Xn - Xo)/Xn );
	   Cont++;
	   printf("\n%3d%10.4lf%10.4lf%10.4lf%10.4lf%10.4f",Cont,Xo,Fx,Fdx,Xn,Error);
	   Xo    = Xn;
	 }

  printf("\n======================================================");
  if (Ciclos > Cont)
	 printf("\n La raiz de la ecuacion es %.5lf ",Xn);
  else
	printf("\n\n No converge en %3d Ciclos !!!! Dar nuevos valores",Ciclos);
  getch();
}

void Lee_Datos(void)

{
	clrscr();
	printf("\n Dar el Valor inicial de X -> ");
	scanf("%lf",&Xo);
	printf("\n Cual es el error Permitido ->");
	scanf("%f",&Tolera);
	printf("\n Numero de ciclos maximos ->");
	scanf("%d",&Ciclos);
}

double Funcion(double Xo)
	{
	 return Xo*Xo*Xo-3*Xo*Xo-4;
	}

double Derivada(double Xo)
	{
	 return  3*Xo*Xo-6*Xo;
	}
double Segunda(double Xo)
	{
	 return  6*Xo-6;
	}


    Source: geocities.com/siliconvalley/pines/7894/metodos

               ( geocities.com/siliconvalley/pines/7894)                   ( geocities.com/siliconvalley/pines)                   ( geocities.com/siliconvalley)