Principal | Gráficos 3D | Gráficos 2D | Fractales | Math | Códigos | Tutoriales | Links
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)
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.
//************************************** //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