jueves, 9 de octubre de 2008

MÉTODO DE NEWTON RAPHSON

Método de Newton-Raphson

El Método de Newton-Raphson es ampliamente utilizado para encontrar las raices de la ecuación f(x)=0, ya que converge rapidamente, la contra es que uno debe conocer la derivada de f(x) y se necesita una aproximación inicial a la raiz.

xn = xn-1 - f(xn-1)/f '(xn-1)
Un ejemplo

Encontrar la raiz de la ecuación x3 + 4.0*x2 - 10.0 = 0, tomando como aproximación inicial para la raiz x=1.0 y N=10 (número máximo de iteraciones) y una tolerencia máxima TOL=0.0000001.

f(x)=x3 + 4.0*x2 - 10.0

f '(x)=3*x2 + 8.0*x

la raiz es x=1.36523001.


Código Fuente






//**************************************
//Metodo de Newton-Rapson para aproximar
//las raices de la ecuacion f(x)=0
//BorlandC 3.1
//Maestria en Desarrollo de Software
//Instituto de Estudios superiores de Chiapas
//**************************************

#include <stdio.h>
#include <math.h>
//la utilizo para las funciones getch() y clrscr()
#include <conio.h>

//numero maximo de iteraciones
#define N 10
//tolerancia maxima
#define TOL 0.0000001

//funcion a aproximar
//f(x)=x^3 + 4.0*x^2 - 10.0
double f(double x)
{
return (x*x*x + 4.0*x*x - 10.0);
}

//derivada de la funcion f(x)
//f'(x)=3*x^2 + 8.0*x
double df(double x)
{
return (3.0*x*x + 8.0*x);
}

int main(void)
{
double x, x0;
int i;

clrscr();
i=1;
//aproximacion inicial de la raiz, de f(x)
x0=1.0;
printf("%d %15.12lf\n", i, x0);
while (i<N)
{
x=x0-f(x0)/df(x0);
if (fabs(x-x0)<TOL)
{
//se alcanzo la tolerancia pedida
//y no se supero el numero maximo
//de iteraciones, esta es la raiz
//buscada.
printf("raiz x = %15.12lf\n", x);
getch();
return 0;
};
i+=1;
x0=x;
//muestra las sucesivas aproximaciones de la raiz.
printf("%d %15.12lf\n", i, x);
}
//se alcanzo el numero maximo de iteraciones pero no
//la tolerancia pedida, el metodo fallo.
printf("Se alcanzo el numero maximo de iteraciones");
getch();
return 0;
}



No hay comentarios: