3. Método de Newton Raphson en Fortran

Publicado por Danilo Toro en

Banner - Método de Newton Rapshon en Fortran

En la entrada de hoy, veremos el método para encontrar raíces más conocido. El Método de Newton Raphson.

Requisitos

  • Conocimientos de funciones matemáticas
  • Conocer acerca de derivadas
  • Conocimientos básicos de programación

Método de Newton Rapshon

El método de Newton Rapshon, tiene un leve parecido al método de la falsa posición, ya que, también aproxima la raíz con la intersección de una recta con el eje X. La diferencia con el otro método, además de ser un método abierto, es que la recta que utiliza el método de Newton Rapshon es la recta tangente desde el punto de la curva.

Lo anterior quiere decir que, para obtener la aproximación de la raíz, se obtiene la recta tangente al punto obtenido en cada iteración (tangente a f(xr) ) y el resultado será la intersección de esta recta con el eje X.

Este método se deduce mediante la serie de Taylor de primer grado, haciendo f(xi + 1) = 0 (ver Cuadro 6.2 – pag. 150 del Chapra)

La ecuación que utiliza para aproximar la raíz la podemos reducir a lo siguiente:

    \[    x_{r} = x - \frac{f(x)}{f'(x)} \]

Como puedes ver, para aplicar este método, es importante conocer de antemano la derivada de la función. Además, solo se necesita como dato inicial, solo un punto y no un intervalo como en los métodos anteriores

Representación gráfica del Método de Newton Raphson
Representación gráfica del método de Newton Raphson

Los pasos para aplicar el algoritmo son:

  • Elegir un número cercano a la raíz
  • Obtener la derivada de la función
  • Obtener la raíz utilizando la fórmula de Newton Rapshon
  • Repetir el punto anterior

Como vez, el algoritmo para el método de Newton Raphson es sencillo y por lo general es muy eficiente, pero hay que tener en cuenta algunas consideraciones para que funcione correctamente

Desventajas del método de Newton Raphson

Una de las principales desventajas que presenta este método, es la misma desventaja que presentan todos los métodos abiertos, y es que, dado que no se busca la raíz en un intervalo, estos métodos pueden diverger.

Algunos casos se pueden observar en esta imagen que nos entrega el libro

Imagen de Casos de convergencia del método de Newton Rapshon
Casos de convergencia del método de Newton Rapshon

A continuación te explicaré el problema de cada punto y como evitarlos en nuestro algoritmo

  • La función a) muestra como nuestra aproximación diverge progresivamente dado que la raíz se encuentra cercano a un punto de inflexión.
  • En la función b) se observa que el método de Newton Rapshon oscila al rededor de un mínimo local. Esto provoca que cada vez se acerque más a una pendiente igual a cero y con esto, una indeterminación en nuestra ecuación
  • El punto c) muestra como en cada iterción nos alejamos más del punto de interés, dado que obtenemos pendientes cercanas a cero, nuestras rectas son cada vez más paralelas al eje X.
  • Finalmente, en la función d) ocurre similar a las funciones anteriores, la recta tangente es una línea horizontal.

Todos los casos anteriores se pueden evitar agregando dos validaciones a nuestro algoritmo

  1. Elegir un número de iteraciones máximo que nos detenga el programa, evitando caer en oscilaciones
  2. Evaluar el punto en la derivada para saber si la pendiente es igual a cero.

Método de Newton Raphson en Fortran

Si corres el programa con la función que he escogido habrás notado que, dependiendo del punto inicial que escojas, la raíz obtenida es diferente.

    \[    x*tan(x)- \frac{x + 1}{cos(0.1)} \]

Gráfica de la función

El método de Newton Raphson, al igual que el resto de los métodos abiertos, tiene el problema que no es sencillo controlar la divergencia, y va saltando a diferentes puntos de la función dependiendo del valor inicial que se elija, por esto no siempre entrega la misma raíz con valores iniciales cercanos

Método de Newton Raphson para múltiples raíces

Encontrar todas las raíces de una función no es sencillo. Debido a que el método permite saltar en diferentes puntos de la función, puede “pasar” por diferentes raíces antes de converger a alguna de ellas.

Al igual que en mis publicaciones anteriores, adicional al código que te muestro, subo al repositorio de Github una versión mejorada del código. Si te interesa, lo puedes ver aquí 👉 Método de Newton Rapshon múltiple 💻.


0 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *