∫Atlas Matemáticas Aplicadas

Inicio › Temas › Métodos numéricos

🔢 Métodos numéricos nivel avanzado

Métodos de Euler y Runge-Kutta

Resolver y' = f(t, y) paso a paso: de la tangente de Euler a las cuatro pendientes de RK4.

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

La idea

Un problema de valor inicial y' = f(t, y), y(t₀) = y₀ rara vez tiene solución en fórmula cerrada. Los métodos de un paso avanzan de tₙ a tₙ₊₁ = tₙ + h usando solo la información del punto actual. El más simple es el método de Euler: seguir la tangente, yₙ₊₁ = yₙ + h f(tₙ, yₙ). Es de orden 1: el error global al final del intervalo es proporcional a h, así que para ganar un dígito decimal hay que multiplicar el trabajo por diez.

El método de Euler mejorado (o de Heun) corrige la pendiente: estima el valor al final del paso con Euler, evalúa allí la pendiente y usa la media de las dos. Con dos evaluaciones de f por paso consigue orden 2. Llevando la idea más lejos, el método de Runge-Kutta de cuarto orden (RK4) combina cuatro pendientes k₁, k₂, k₃, k₄ evaluadas al principio, en el punto medio (dos veces) y al final, con pesos 1-2-2-1, y obtiene un error global proporcional a h⁴: al dividir h entre 2 el error se divide por 16.

El orden se mide experimentalmente: si e(h) ≈ C hᵖ, entonces e(h)/e(h/2) ≈ 2ᵖ y el orden observado es log₂ de ese cociente. RK4 es el caballo de batalla de la simulación porque ofrece la mejor relación precisión/coste para problemas no rígidos. Sus límites: en problemas rígidos (como y' = −50y) los métodos explícitos exigen pasos minúsculos para no volverse inestables (Euler oscila y explota si |1 − 50h| > 1), y en simulaciones muy largas de sistemas conservativos se prefieren métodos simplécticos que conservan la energía. Las versiones adaptativas (RK45, Dormand-Prince) eligen h automáticamente comparando dos órdenes.

Fórmulas clave

  • Euleryₙ₊₁ = yₙ + h f(tₙ, yₙ) (error global O(h))
  • Euler mejorado (Heun)k₁ = f(tₙ, yₙ), k₂ = f(tₙ + h, yₙ + h k₁), yₙ₊₁ = yₙ + h (k₁ + k₂)/2 (O(h²))
  • RK4: pendientesk₁ = f(tₙ, yₙ), k₂ = f(tₙ + h/2, yₙ + h k₁/2), k₃ = f(tₙ + h/2, yₙ + h k₂/2), k₄ = f(tₙ + h, yₙ + h k₃)
  • RK4: pasoyₙ₊₁ = yₙ + h (k₁ + 2k₂ + 2k₃ + k₄) / 6 (O(h⁴))
  • Orden observadop ≈ log₂[ e(h) / e(h/2) ]

Dónde se aplica

Los motores de física de los videojuegos integran las ecuaciones de movimiento con Euler semi-implícito o RK4 en cada fotograma; las misiones espaciales calculan trayectorias con Runge-Kutta adaptativo de orden alto. En epidemiología, los modelos SIR y sus variantes se resuelven con RK4 para proyectar contagios; en química, la cinética de reacciones acopladas y, en electrónica, la respuesta transitoria de un circuito son sistemas de EDO que se integran numéricamente. Las funciones odeint y solve_ivp de Python encapsulan exactamente estos métodos.

Con programación (Python)

import math

# y' = y - t^2 + 1, y(0) = 0.5; solución exacta y = (t + 1)^2 - 0.5 e^t
f = lambda t, y: y - t * t + 1
exacta = lambda t: (t + 1) ** 2 - 0.5 * math.exp(t)

def integrar(metodo, h, T):
    t, y = 0.0, 0.5
    for _ in range(round(T / h)):
        k1 = f(t, y)
        if metodo == "euler":
            y += h * k1
        elif metodo == "heun":
            k2 = f(t + h, y + h * k1)
            y += h * (k1 + k2) / 2
        else:
            k2 = f(t + h / 2, y + h * k1 / 2)
            k3 = f(t + h / 2, y + h * k2 / 2)
            k4 = f(t + h, y + h * k3)
            y += h * (k1 + 2 * k2 + 2 * k3 + k4) / 6
        t += h
    return y

yT = exacta(2)
print("y(2) exacta =", yT)
prev = {}
for h in (0.4, 0.2, 0.1, 0.05):
    linea = f"h={h:<5}"
    for m in ("euler", "heun", "rk4"):
        e = abs(integrar(m, h, 2) - yT)
        linea += f"  {m}: {e:.2e}" + (f" (÷{prev[m] / e:.1f})" if m in prev else "")
        prev[m] = e
    print(linea)

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

Temas relacionados

Campos de direcciones, Euler y RK4 · Crecimiento y decaimiento exponencial · Integración numérica: trapecio y Simpson · Crecimiento logístico

← Todos los temas