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:
Publicar un comentario