∫Atlas Matemáticas Aplicadas

Inicio › Temas › Métodos numéricos

🔢 Métodos numéricos nivel medio

Método de Newton-Raphson

Seguir la tangente hasta el eje: convergencia cuadrática cuando funciona y fallos famosos cuando no.

🕹️ Ábrelo en el curso interactivo (simulador y código ejecutable)

La idea

El método de Newton-Raphson sustituye la curva por su recta tangente. Partiendo de una aproximación x₀, se traza la tangente a la gráfica en (x₀, f(x₀)) y se toma como nueva aproximación el punto donde esa recta corta al eje X. La fórmula que resulta es xₙ₊₁ = xₙ − f(xₙ)/f'(xₙ), y se repite hasta que dos iteraciones consecutivas difieran menos de la tolerancia deseada.

Cuando la raíz r es simple (f'(r) ≠ 0) y el punto inicial está suficientemente cerca, la convergencia es cuadrática: el error de cada paso es proporcional al cuadrado del anterior, eₙ₊₁ ≈ |f''(r)/(2f'(r))| · eₙ². En la práctica el número de cifras correctas se duplica en cada iteración: de 2 se pasa a 4, luego a 8 y a 16, de modo que cuatro o cinco pasos bastan para agotar la precisión del punto flotante. Es el motivo de que el algoritmo de la raíz cuadrada de las calculadoras sea Newton aplicado a x² − a.

El precio de esa velocidad es la fragilidad. Si f'(xₙ) = 0 la tangente es horizontal y el método se rompe; si la derivada es pequeña, el salto puede lanzar la iteración lejos de la raíz; con f(x) = ∛x diverge desde cualquier punto inicial (cada paso duplica la distancia), y con f(x) = x² + 1, que no tiene raíces reales, vaga sin rumbo. En raíces múltiples la convergencia se degrada a lineal. Por eso los programas serios combinan Newton con bisección o exigen un buen punto de partida. Sus variantes, el método de la secante (que aproxima f' con dos puntos) y el Newton multidimensional (con la matriz jacobiana), sostienen desde la optimización hasta los simuladores de circuitos.

Fórmulas clave

  • Iteración de Newtonxₙ₊₁ = xₙ − f(xₙ) / f'(xₙ)
  • Recta tangente usaday = f(xₙ) + f'(xₙ)(x − xₙ)
  • Convergencia cuadráticaeₙ₊₁ ≈ |f''(r) / (2 f'(r))| · eₙ²
  • Raíz cuadrada de axₙ₊₁ = (xₙ + a/xₙ) / 2
  • Método de la secantexₙ₊₁ = xₙ − f(xₙ)(xₙ − xₙ₋₁) / [f(xₙ) − f(xₙ₋₁)]

Dónde se aplica

Los simuladores de circuitos (SPICE) resuelven en cada instante un sistema no lineal con la versión multidimensional de Newton, y lo mismo hacen los programas de análisis estructural con grandes deformaciones. En finanzas, la volatilidad implícita de una opción se obtiene aplicando Newton a la fórmula de Black-Scholes, porque su derivada (la vega) tiene expresión cerrada. Y en robótica, la cinemática inversa (qué ángulos deben adoptar las articulaciones para que la mano llegue a un punto) se resuelve iterando Newton con la matriz jacobiana del brazo.

Con programación (Python)

import math

def newton(f, df, x0, tol=1e-12, max_iter=20):
    x = x0
    for n in range(1, max_iter + 1):
        dx = f(x) / df(x)
        x -= dx
        print(f"n={n}  x={x:.15f}  |Δx|={abs(dx):.2e}")
        if abs(dx) < tol:
            return x
    return x

print("√2 con f(x) = x² − 2, x0 = 1")
r = newton(lambda x: x*x - 2, lambda x: 2*x, 1.0)
print("error final:", abs(r - math.sqrt(2)))

print("cos x = x con x0 = 1")
s = newton(lambda x: math.cos(x) - x, lambda x: -math.sin(x) - 1, 1.0)
print("cos(s) - s =", math.cos(s) - s)

print("Fallo con f(x) = x^(1/3) desde x0 = 1: cada paso da x -> -2x")
x = 1.0
for n in range(5):
    x = x - 3 * x   # f/f' = 3x para la raíz cúbica
    print("  x =", x)

La versión en JavaScript, editable y ejecutable en el navegador, está en la página interactiva del tema.

Temas relacionados

Método de bisección · Iteración de punto fijo · Recta tangente y aproximación lineal · Descenso del gradiente

← Todos los temas