/**************************************/
/* 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 Xo;
float Tolera;
int Ciclos;
int main()
{
double Fx;
double Fdx;
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);
Xn = Xo - (Fx / 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;
}
               (
geocities.com/siliconvalley/pines/7894)                   (
geocities.com/siliconvalley/pines)                   (
geocities.com/siliconvalley)