Principal | Gráficos 3D | Gráficos 2D | Fractales | Math | Códigos | Tutoriales | Links

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
//Ramiro Alcocer
//valcoey@hotmail.com
//www.oocities.org/valcoey/index.html
//**************************************

#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;
}


valcoey@hotmail.com

Ramiro Alcocer, 2001

Principal | Gráficos 3D | Gráficos 2D | Fractales | Math | Códigos | Tutoriales | Links