metodo newton raphson

pavel
09 de Marzo del 2006
alguien me podria enviar en metodo implememtado en c/c++?
gracias de antemano

Miguel L.
09 de Marzo del 2006
#include <iostream.h> //PARA EL CIN Y EL COUT
#include <stdlib.h> //PARA EXIT
#include <stdio.h> //PARA PRINTF Y SCANF
#include <math.h> //PARA FABS (Valor absoluto)
#include <conio.h> //...PARA LAS RESTANTES
#define ITERACIONES 20 //NUMERO MAXIMO DE ITERACIONES
#define CIFRAS_REPETIDAS 0.0001 //CIFRAS REPETIDAS PARA NEWTON RAPHSON
#define ESC 0x1b //DEFINE LA TECLA ESC

//FUNCION PARA DETERMINAR EL INTERVALO
void intervalo(int x3,int x2, int x1, int x0)
{
int res;
clrscr();
cout<<endl;
for (int cont=-10,i=2;cont<=10;cont++,i++)
{
res=x3*(cont*cont*cont)+x2*(cont*cont) + x1*cont + x0;
printf("t Cuando x= %d t f(x)= %d n",cont,res);
}
}

//FUNCION A APROXIMAR
float f(float x,int x3,int x2, int x1, int x0)
{
return ( (x3*(x*x*x)) + (x2*(x*x)) + (x1*x) + x0 );
}

//DERIVADA DE LA FUNCION f(x)
float df(float x,int x3,int x2, int x1)
{
return ( ((3*x3)*(x*x)) + (x2*2)*x + x1);
}




int newton_raphson(float x0,int A, int B, int C, int D) //
{ //LE PASO EL INTERVALO A INICIAR Y LOS COEFICIENTES
float x;
clrscr();
cout<<" N E W T O N R A P H S O N n";
for(int i=1;i<=ITERACIONES;i++) //N=Numero maximo de iteraciones
{
x=x0-f(x0,A,B,C,D)/df(x0,A,B,C);
printf("ttt %døiteracion = %fn", i, x);

if (fabs(x-x0)<CIFRAS_REPETIDAS) //si hay 3 cifras repetidas
{
gotoxy(10,23);textcolor(128);
cprintf("Esta es la raiz buscada x = %f",x);// esta es la raiz buscada.
textcolor(2);
return(0);
};

x0=x;
}

gotoxy(1,23);textcolor(128);
printf("SE ALCANZO EL NéMERO MAXIMO DE ITERACIONES Y NO SE ENCONTRO EL VALOR BUSCADO");
textcolor(2);
}


/*****************funcion principal*****************/
main()
{
clrscr();
int A,B,C,D;
int opcion;
float Xi,Xu;

textbackground(1); //COLOR DE LA PANTALLA AZUL
textcolor(14);
do
{
clrscr();
/***********************COMIENZA EL MENU*******************************/
// NEWTON RAPHSON
printf("nDAME LOS COEFICIENTES DE LA ECUACION A A CALCULAR n");
printf("DAME EL COEFICIENTE DE x^3 ");cin>>A;
printf("DAME EL COEFICIENTE DE x^2 ");cin>>B;
printf("DAME EL COEFICIENTE DE x^1 ");cin>>C;
printf("DAME EL COEFICIENTE DE x^0 ");cin>>D;
intervalo(A,B,C,D);
printf("nDAME EL INTERVALO "); cin>>Xi; //guardo el intervalo Xi
newton_raphson(Xi,A,B,C,D);



/***********************TERMINA EL MENU*******************************/

printf ("nnn¨DESEAS REALIZAR OTRO PROCESO? Para salir presione ESC...nPresiona cualquier tecla para continuar...");

}//fin de do
while(getch()!=ESC); //si presionas ESC se termina el BUCLE

return(0);
}

// ME AVISAS SI FUNCIONO SI.. BYE