Astronomía y Exploración Espacial

Educación Universitaria / Métodos numéricos en astrofísica

Runge–Kutta y paso adaptativo

De Euler a RK4 y a los pares encajados RKF45 y Dormand–Prince: orden, error local y global, control automático del paso y su aplicación a una órbita muy excéntrica, con tablas de error medidas.

⏱ 180 min EDOsseries de Taylorcondiciones de ordenestabilidad linealanálisis de errorcontrol realimentado del paso revision

Al terminar podrás:
  • Definir error local y global de un método de un paso y demostrar que un error local O(h^(p+1)) produce un error global O(h^p) bajo una condición de Lipschitz.
  • Deducir las condiciones de orden de los métodos de Runge–Kutta hasta orden 2 y enunciar las de RK4.
  • Explicar el principio de los pares encajados (RKF45, Dormand–Prince) y derivar la ley de control del paso a partir de la estimación del error local.
  • Medir numéricamente el orden de Euler, RK4 y Dormand–Prince en una órbita kepleriana y comparar el coste de paso fijo y paso adaptativo en una órbita de excentricidad 0.9.
  • Reconocer qué propiedades (simplecticidad, conservación de la energía) se pierden con el paso adaptativo y cuándo compensa.

1. Motivación: una sonda en órbita muy excéntrica

Ilustración: Motivación: una sonda en órbita muy excéntrica

Una sonda en una órbita de excentricidad e=0.9e = 0.9 pasa el 90 % del tiempo lejos del planeta moviéndose despacio y, durante una fracción breve, cruza el pericentro a velocidad (1+e)/(1−e)=19≈4.4\sqrt{(1+e)/(1-e)} = \sqrt{19} \approx 4.4 veces mayor que en el apocentro. Si integramos con un paso fijo pequeño para resolver el pericentro, desperdiciamos casi todo el trabajo en el apocentro; si lo elegimos grande, el pericentro se resuelve mal y la órbita se abre o se cierra. Este es el problema que resuelven los métodos de paso adaptativo: estimar el error de cada paso y dejar que el propio integrador decida cuán largo puede ser el siguiente.

En esta lección usamos el problema de Kepler plano con parámetro gravitatorio μ=G(m1+m2)\mu = G(m_1+m_2) como banco de pruebas, porque tiene solución exacta (lección sobre la ecuación de Kepler) con la que medir errores. Escribimos y=(x,y,vx,vy)y = (x, y, v_x, v_y) y

y˙=f(t,y)=(vx, vy, −μxr3, −μyr3),r=x2+y2.\dot y = f(t, y) = \left(v_x,\ v_y,\ -\frac{\mu x}{r^3},\ -\frac{\mu y}{r^3}\right),\qquad r = \sqrt{x^2+y^2}.

Unidades: en el código (src/lib/math/rungekutta.ts\mathtt{src/lib/math/rungekutta.ts}) todo es adimensional con μ=1\mu = 1, a=1a = 1; el periodo es T=2πT = 2\pi. Para pasar a SI basta fijar μ\mu y aa y usar [t]=a3/μ[t] = \sqrt{a^3/\mu}.

2. Métodos de un paso: error local y global

Ilustración: Métodos de un paso: error local y global

Sea y˙=f(t,y)\dot y = f(t,y) con ff lipschitziana en yy con constante LL, es decir ∥f(t,u)−f(t,v)∥≤L∥u−v∥\lVert f(t,u) - f(t,v)\rVert \le L\lVert u - v\rVert. Un método de un paso avanza con una función de incremento Φ\Phi:

yn+1=yn+h Φ(tn,yn,h).y_{n+1} = y_n + h\,\Phi(t_n, y_n, h).

Definición. El error local en el paso nn es la diferencia entre lo que da el método partiendo del valor exacto y el valor exacto un paso después: ℓn+1=y(tn)+hΦ(tn,y(tn),h)−y(tn+1)\ell_{n+1} = y(t_n) + h\Phi(t_n, y(t_n), h) - y(t_{n+1}). El método es de orden pp si ∥ℓn+1∥≤Chp+1\lVert\ell_{n+1}\rVert \le C h^{p+1}. El error global es en=yn−y(tn)e_n = y_n - y(t_n).

Teorema (convergencia). Si el método tiene orden pp y Φ\Phi es lipschitziana en yy con constante Λ\Lambda, entonces en un intervalo fijo [t0,t0+Tf][t_0, t_0 + T_f]

∥en∥≤ChpΛ(eΛTf−1)=O(hp).\lVert e_n\rVert \le \frac{C h^{p}}{\Lambda}\left(e^{\Lambda T_f} - 1\right) = O(h^p).

Demostración. Restando la definición de error local de la del método, en+1=en+h[Φ(tn,yn,h)−Φ(tn,y(tn),h)]+ℓn+1e_{n+1} = e_n + h\left[\Phi(t_n, y_n, h) - \Phi(t_n, y(t_n), h)\right] + \ell_{n+1}, luego ∥en+1∥≤(1+hΛ)∥en∥+Chp+1\lVert e_{n+1}\rVert \le (1 + h\Lambda)\lVert e_n\rVert + C h^{p+1}. Iterando esta recurrencia lineal con e0=0e_0 = 0,

∥en∥≤Chp+1∑k=0n−1(1+hΛ)k=Chp+1 (1+hΛ)n−1hΛ≤ChpΛ(enhΛ−1),\lVert e_n\rVert \le C h^{p+1}\sum_{k=0}^{n-1}(1+h\Lambda)^k = C h^{p+1}\,\frac{(1+h\Lambda)^n - 1}{h\Lambda} \le \frac{C h^p}{\Lambda}\left(e^{n h\Lambda} - 1\right),

usando (1+hΛ)n≤enhΛ(1 + h\Lambda)^n \le e^{nh\Lambda}. Con nh≤Tfnh \le T_f se obtiene la cota. ■\blacksquare

Un error local O(hp+1)O(h^{p+1}) se convierte en global O(hp)O(h^p) porque se cometen n=Tf/hn = T_f/h errores. La constante eΛTfe^{\Lambda T_f} es pesimista pero real: en órbitas, los errores de fase crecen linealmente con el tiempo, y en sistemas caóticos exponencialmente (lección anterior).

2.1 Euler

Φ=f(tn,yn)\Phi = f(t_n, y_n). Comparando con la serie de Taylor y(tn+h)=y+hy˙+h22y¨+…y(t_n + h) = y + h\dot y + \tfrac{h^2}{2}\ddot y + \dots, el error local es h22y¨+O(h3)\tfrac{h^2}{2}\ddot y + O(h^3): orden 1. Para una órbita circular, y¨\ddot y apunta hacia el centro y Euler sale siempre «por la tangente»: la órbita crece en espiral (ejercicio 1). En nuestra tabla (§5) hace falta h≈10−3h \approx 10^{-3} para un error del 20 % tras una sola vuelta.

2.2 Condiciones de orden: el caso de dos etapas

Un método de Runge–Kutta explícito de ss etapas se define por su tabla de Butcher (c,A,b)(c, A, b):

ki=f ⁣(tn+cih, yn+h∑j<iaijkj),yn+1=yn+h∑i=1sbiki.k_i = f\!\left(t_n + c_i h,\ y_n + h\sum_{j<i} a_{ij} k_j\right),\qquad y_{n+1} = y_n + h\sum_{i=1}^{s} b_i k_i .

Para dos etapas con c1=0c_1 = 0, c2=a21=cc_2 = a_{21} = c (condición ∑jaij=ci\sum_j a_{ij} = c_i que asumimos siempre), y escribiendo ff, ftf_t, fyf_y evaluadas en (tn,yn)(t_n, y_n),

k2=f+ch (ft+fyf)+O(h2),yn+1=yn+h(b1+b2)f+h2b2c (ft+fyf)+O(h3).k_2 = f + c h\,(f_t + f_y f) + O(h^2),\qquad y_{n+1} = y_n + h(b_1 + b_2) f + h^2 b_2 c\,(f_t + f_y f) + O(h^3).

La solución exacta es y+hf+h22(ft+fyf)+O(h3)y + h f + \tfrac{h^2}{2}(f_t + f_y f) + O(h^3), de modo que el método es de orden 2 si y solo si

b1+b2=1,b2c=12.b_1 + b_2 = 1,\qquad b_2 c = \tfrac12 .

Es una familia uniparamétrica: c=12c = \tfrac12 da el punto medio (b=(0,1)b = (0, 1)) y c=1c = 1 el método de Heun (b=(12,12)b = (\tfrac12, \tfrac12)). Para orden 3 aparecen 4 condiciones, para orden 4 son 8 y para orden 5 son 17; el número de condiciones crece como los árboles con raíz de pp vértices (teoría de Butcher; Hairer–Nørsett–Wanner §II.2). Por eso el RK4 clásico con 4 etapas y orden 4 es un punto dulce: a partir de orden 5 hacen falta más etapas que el orden (66 etapas para orden 5, 77 para orden 6).

2.3 RK4

Con c=(0,12,12,1)c = (0, \tfrac12, \tfrac12, 1), a21=a32=12a_{21} = a_{32} = \tfrac12, a43=1a_{43} = 1 y b=16(1,2,2,1)b = \tfrac16(1, 2, 2, 1) se cumplen las 8 condiciones de orden 4: error local O(h5)O(h^5), global O(h4)O(h^4). Aplicado a y˙=λy\dot y = \lambda y da yn+1=R(hλ)yny_{n+1} = R(h\lambda) y_n con R(z)=1+z+z2/2+z3/6+z4/24R(z) = 1 + z + z^2/2 + z^3/6 + z^4/24, el polinomio de Taylor de eze^z: la región de estabilidad absoluta ∣R(z)∣≤1\lvert R(z)\rvert \le 1 corta el eje real negativo en z=−2.785z = -2.785 y el imaginario en ±2.83 i\pm 2.83\,i. Para un oscilador de frecuencia ω\omega eso exige hω<2.83h\omega \lt 2.83; en el pericentro de una órbita la «frecuencia local» es μ/rp3\sqrt{\mu/r_p^3}, y es ella la que fija el paso.

3. Pares encajados y control del paso

Ilustración: Pares encajados y control del paso

3.1 La idea

Si disponemos de dos aproximaciones yn+1y_{n+1} (orden pp) e y^n+1\hat y_{n+1} (orden p^=p−1\hat p = p - 1) que comparten las mismas etapas kik_i (solo cambian los pesos bib_i frente a b^i\hat b_i), la diferencia

errn+1=yn+1−y^n+1=h∑i(bi−b^i) ki=O(hp)\mathrm{err}_{n+1} = y_{n+1} - \hat y_{n+1} = h\sum_i (b_i - \hat b_i)\,k_i = O(h^{p})

estima el error local del método de orden inferior sin ninguna evaluación adicional. Los dos pares más usados:

ParEtapasÓrdenesAutorParticularidad
RKF4564(5)Fehlberg (1969)diseñado para propagar la solución de orden 4; en la práctica se propaga la de orden 5 («extrapolación local»)
Dormand–Prince 5(4)75(4)Dormand & Prince (1980)coeficientes optimizados para minimizar el error del método de orden 5; propiedad FSAL: la séptima etapa coincide con la primera del paso siguiente, luego cuesta 6 evaluaciones por paso aceptado

Es el método ode45 de MATLAB y RK45 de SciPy. Las dos tablas están en rungekutta.ts; el test comprueba las identidades ∑bi=∑b^i=1\sum b_i = \sum\hat b_i = 1, ∑jaij=ci\sum_j a_{ij} = c_i, y mide el orden 5 de la solución propagada y el orden 5 del estimador de error (§5). Nuestra implementación no aprovecha FSAL (7 evaluaciones por paso), lo que infla un 17 % las cuentas de evaluaciones de Dormand–Prince en las tablas.

3.2 Ley de control del paso

Queremos que el error local por componente no supere una tolerancia mixta sci=atol+rtol⋅max⁡(∣yn,i∣,∣yn+1,i∣)sc_i = \mathrm{atol} + \mathrm{rtol}\cdot\max(\lvert y_{n,i}\rvert, \lvert y_{n+1,i}\rvert). Definimos la norma escalada

err=1N∑i=1N(errn+1,isci)2.\mathrm{err} = \sqrt{\frac1N\sum_{i=1}^N\left(\frac{\mathrm{err}_{n+1,i}}{sc_i}\right)^2}.

Como err≈Khq\mathrm{err} \approx K h^{q} con q=p^+1q = \hat p + 1 (el orden del error local del método encajado de orden p^\hat p), el paso «óptimo» que daría err=1\mathrm{err} = 1 es hopt=h err−1/qh_{\text{opt}} = h\,\mathrm{err}^{-1/q}. Con un factor de seguridad y límites para evitar oscilaciones:

hnuevo=h⋅min⁡ ⁣(5, max⁡ ⁣(0.2, 0.9 err−1/q)).h_{\text{nuevo}} = h\cdot\min\!\left(5,\ \max\!\left(0.2,\ 0.9\,\mathrm{err}^{-1/q}\right)\right).

Si err≤1\mathrm{err} \le 1 el paso se acepta y se avanza; si no, se rechaza y se repite con hnuevoh_{\text{nuevo}}. Es un controlador proporcional (Hairer–Nørsett–Wanner §II.4, ec. 4.13). En integrarAdaptativo usamos q=5q = 5 para ambos pares.

Conviene ser honesto sobre lo que se controla: el error local por paso, no el global. El error global acumulado puede ser órdenes de magnitud mayor que la tolerancia (tabla de §5: con tol=10−6\mathrm{tol} = 10^{-6} el error de posición tras una vuelta es ∼10−3\sim 10^{-3}) porque los errores de fase se suman y porque la órbita excéntrica amplifica perturbaciones cerca del pericentro. La regla práctica es que el error global escala linealmente con la tolerancia para un método de orden pp propagado con extrapolación local (tolp/(p+1)\mathrm{tol}^{p/(p+1)} en teoría, pero en la práctica el exponente suele estar entre 0.8 y 1): la tabla da tol 10−6→10−12\mathrm{tol}\, 10^{-6}\to10^{-12} y error 1.6×10−3→4×10−101.6\times10^{-3}\to 4\times10^{-10}, es decir un factor 4×1064\times 10^{6} en error por 10610^{6} en tolerancia.

4. Simulador

tres masas iguales, T ≈ 6.3259 · t = 0.00

Qué observar. El simulador integra con paso fijo (RK4 o leapfrog). Con «2 cuerpos, e = 0.8», mide cuántos pasos por periodo necesita RK4 para que la órbita se cierre visiblemente: ese número es el que un integrador adaptativo reparte de forma desigual, concentrando los pasos cortos en el pericentro (en nuestra corrida con e=0.9e = 0.9 y tol=10−10\mathrm{tol} = 10^{-10}, el paso varía entre 4.3×10−54.3\times10^{-5} y 9.5×10−29.5\times10^{-2}: un factor 2200).

5. Resultados numéricos

Ilustración: Resultados numéricos

Todos los números de esta sección provienen de rungekutta.ts (el test rungekutta.test.ts verifica los órdenes; las tablas se generaron con el mismo código). Órbita a=1a = 1, μ=1\mu = 1, T=2πT = 2\pi; error de posición ∥rN−r(T)∥\lVert \mathbf r_N - \mathbf r(T)\rVert tras una vuelta frente a la solución de Kepler, y error relativo de energía ∣ΔE/E∣\lvert\Delta E/E\rvert.

5.1 Orden medido, e=0.5e = 0.5, paso fijo

Pasos por vueltahhEulerRK4Dormand–Prince (orden 5, paso fijo)
1006.28×10−26.28\times10^{-2}4.64.65.5×10−45.5\times10^{-4}7.8×10−67.8\times10^{-6}
2003.14×10−23.14\times10^{-2}3.23.22.6×10−52.6\times10^{-5}2.7×10−72.7\times10^{-7}
4001.57×10−21.57\times10^{-2}2.22.21.4×10−61.4\times10^{-6}7.3×10−97.3\times10^{-9}
8007.85×10−37.85\times10^{-3}1.41.47.9×10−87.9\times10^{-8}2.0×10−102.0\times10^{-10}
16003.93×10−33.93\times10^{-3}0.830.834.7×10−94.7\times10^{-9}5.6×10−125.6\times10^{-12}
32001.96×10−31.96\times10^{-3}0.450.452.9×10−102.9\times10^{-10}1.5×10−131.5\times10^{-13}
64009.8×10−49.8\times10^{-4}0.230.231.8×10−111.8\times10^{-11}1.3×10−131.3\times10^{-13}

Al dividir hh por 2, Euler divide el error por ≈1.5\approx 1.5–22 (orden 1, todavía fuera del régimen asintótico mientras el error es O(1)O(1)), RK4 por ≈17\approx 17–2121 (orden 4, 24=162^4 = 16) y Dormand–Prince por ≈29\approx 29–3737 (orden 5, 25=322^5 = 32). En la última fila Dormand–Prince ya ha tocado el suelo del redondeo en doble precisión (∼10−13\sim 10^{-13} tras 6400×76400\times 7 evaluaciones): reducir más el paso no mejora nada, porque el error de redondeo crece como ϵmaˊq/h\epsilon_{\text{máq}}/h.

La energía de RK4 deriva: con h=T/200h = T/200 el error ∣ΔE/E∣\lvert\Delta E/E\rvert es 9.3×10−79.3\times10^{-7} tras 1 vuelta, 9.3×10−69.3\times10^{-6} tras 10 y 9.3×10−59.3\times10^{-5} tras 100: exactamente lineal en tt, como se demostró para el oscilador en la lección anterior.

5.2 Paso adaptativo, e=0.9e = 0.9, una vuelta

ToleranciaParPasos aceptadosRechazadosEvaluaciones de ffError de posición∣ΔE/E∣\lvert\Delta E/E\rvert
10−610^{-6}RKF4553214441.1×10−31.1\times10^{-3}5.0×10−55.0\times10^{-5}
10−610^{-6}DP5(4)50204901.6×10−31.6\times10^{-3}1.1×10−51.1\times10^{-5}
10−810^{-8}RKF45123188461.3×10−51.3\times10^{-5}6.9×10−76.9\times10^{-7}
10−810^{-8}DP5(4)114249661.1×10−51.1\times10^{-5}7.0×10−87.0\times10^{-8}
10−1010^{-10}RKF45302118181.3×10−71.3\times10^{-7}5.9×10−95.9\times10^{-9}
10−1010^{-10}DP5(4)278119536.5×10−86.5\times10^{-8}8.2×10−108.2\times10^{-10}
10−1210^{-12}RKF45760145661.3×10−91.3\times10^{-9}6.0×10−116.0\times10^{-11}
10−1210^{-12}DP5(4)698148934.1×10−104.1\times10^{-10}1.1×10−111.1\times10^{-11}

Comparación con RK4 de paso fijo en la misma órbita: para bajar el error de posición a 1.6×10−71.6\times10^{-7} hacen falta 16 00016\,000 pasos (64 00064\,000 evaluaciones); Dormand–Prince lo consigue con tolerancia 10−1010^{-10} y 19531953 evaluaciones, 33 veces menos. La ganancia es mayor cuanto más excéntrica es la órbita: en una circular el paso adaptativo apenas aporta.

Dos observaciones sobre la tabla. (1) A tolerancia laxa hay muchos rechazos (≈ 30 %): el controlador proporcional sobreestima el paso tras el pericentro; los controladores PI (Gustafsson 1991) lo reducen. (2) Dormand–Prince conserva mejor la energía que RKF45 al mismo coste porque sus coeficientes minimizan el error de la fórmula de orden 5, que es la que se propaga; RKF45 fue optimizado para la de orden 4.

6. Análisis de error: lo que el paso adaptativo no da

Ilustración: Análisis de error: lo que el paso adaptativo no da
  1. No es simpléctico. Cambiar hh según el estado convierte la aplicación en y↦Φh(y)(y)y \mapsto \Phi_{h(y)}(y), que en general no conserva la forma simpléctica aunque Φh\Phi_h lo sea (Hairer–Lubich–Wanner §VIII.2). La energía vuelve a derivar: en la tabla, ∣ΔE/E∣\lvert\Delta E/E\rvert crece con el tiempo como en RK4. Para integraciones de miles de periodos se prefiere un simpléctico de paso fijo (o con paso variable reversible, que usa una transformación de tiempo dt=g(y) dτdt = g(y)\,d\tau y recupera la conservación).
  2. Controla el error local, no el global. Vimos que el global puede ser 10310^{3} veces la tolerancia. Para estimar el global hay que integrar dos veces (con tol\mathrm{tol} y tol/10\mathrm{tol}/10) y comparar, o integrar hacia delante y hacia atrás.
  3. Redondeo. El error total es ≈C1hp+C2 ϵmaˊq/h\approx C_1 h^{p} + C_2\,\epsilon_{\text{máq}}/h; existe un hh óptimo y pedir tol<10−13\mathrm{tol} \lt 10^{-13} en doble precisión es inútil (fila 6400 de la tabla 5.1).
  4. Encuentros cercanos. El paso adaptativo los resuelve (es su gran ventaja frente al paso fijo), pero el coste se dispara: h∼rmin⁡3/μh \sim \sqrt{r_{\min}^3/\mu}. Para colisiones casi exactas hace falta regularizar (Kustaanheimo–Stiefel) o usar coordenadas que eliminen la singularidad.

Problemas

1. (Euler en órbita circular). Para y˙=f(y)\dot y = f(y) con μ=1\mu = 1, r=1r = 1 y velocidad circular v=1v = 1, demuestra que un paso de Euler aumenta rr en h22+O(h4)\tfrac{h^2}{2} + O(h^4) y la energía específica en h22+O(h4)\tfrac{h^2}{2} + O(h^4), de modo que la órbita se abre en espiral.

Ver solución

Partimos de r=(1,0)\mathbf r = (1, 0), v=(0,1)\mathbf v = (0, 1), a=(−1,0)\mathbf a = (-1, 0). Euler da r1=(1,h)\mathbf r_1 = (1, h), v1=(−h,1)\mathbf v_1 = (-h, 1). Entonces r1=1+h2=1+h22+O(h4)r_1 = \sqrt{1 + h^2} = 1 + \tfrac{h^2}{2} + O(h^4) y v12=1+h2v_1^2 = 1 + h^2. La energía específica pasa de E0=12−1=−12E_0 = \tfrac12 - 1 = -\tfrac12 a E1=1+h22−11+h2=12+h22−1+h22+O(h4)=−12+h2+O(h4)E_1 = \tfrac{1 + h^2}{2} - \tfrac{1}{\sqrt{1+h^2}} = \tfrac12 + \tfrac{h^2}{2} - 1 + \tfrac{h^2}{2} + O(h^4) = -\tfrac12 + h^2 + O(h^4). En cada paso la energía sube ≈h2\approx h^2 (siempre del mismo signo: por eso es secular), y tras n=2π/hn = 2\pi/h pasos sube ≈2πh\approx 2\pi h: lineal en hh, orden 1. En la tabla, con h=10−3h = 10^{-3} el error de energía tras una vuelta es 2.3×10−2⋅12≈0.012≈2πh⋅22.3\times10^{-2}\cdot\tfrac12 \approx 0.012 \approx 2\pi h \cdot 2; el factor 2 proviene de que en la órbita e=0.5e = 0.5 la contribución del pericentro domina.

2. (Condiciones de orden 2). Demuestra que no existe ningún método de Runge–Kutta explícito de 2 etapas de orden 3.

Ver solución

Con la expansión de §2.2 llevada a O(h3)O(h^3): la solución exacta contiene el término h36(ftt+2ftyf+fyyf2+fy(ft+fyf))\tfrac{h^3}{6}\left(f_{tt} + 2f_{ty}f + f_{yy}f^2 + f_y(f_t + f_y f)\right), mientras que el método aporta h3b2c22(ftt+2ftyf+fyyf2)h^3 b_2 \tfrac{c^2}{2}\left(f_{tt} + 2 f_{ty} f + f_{yy} f^2\right) y ningún término proporcional a fy(ft+fyf)f_y(f_t + f_y f) (ese término solo aparece al evaluar ff en un punto que ya contenga una evaluación de ff «anidada», lo que exige una tercera etapa). Para ff general ambos tipos de términos son independientes, así que la condición 0=160 = \tfrac16 es imposible. Las condiciones para orden 3 con tres etapas son ∑bi=1\sum b_i = 1, ∑bici=12\sum b_i c_i = \tfrac12, ∑bici2=13\sum b_i c_i^2 = \tfrac13 y ∑i,jbiaijcj=16\sum_{i,j} b_i a_{ij} c_j = \tfrac16. ■\blacksquare

3. (Estabilidad lineal de RK4). Demuestra que para y˙=iωy\dot y = i\omega y el RK4 da ∣R(ihω)∣2=1−(hω)672+(hω)8576\lvert R(i h\omega)\rvert^2 = 1 - \tfrac{(h\omega)^6}{72} + \tfrac{(h\omega)^8}{576} y deduce el límite de estabilidad hω<22h\omega \lt 2\sqrt2.

Ver solución

Con θ=hω\theta = h\omega, R(iθ)=(1−θ22+θ424)+i(θ−θ36)R(i\theta) = \left(1 - \tfrac{\theta^2}{2} + \tfrac{\theta^4}{24}\right) + i\left(\theta - \tfrac{\theta^3}{6}\right). Elevando al cuadrado y sumando (cálculo de la lección anterior, ejercicio 3) resulta 1−θ6/72+θ8/5761 - \theta^6/72 + \theta^8/576. La condición ∣R∣≤1\lvert R\rvert \le 1 equivale a θ8/576≤θ6/72\theta^8/576 \le \theta^6/72, es decir θ2≤8\theta^2 \le 8, θ≤22≈2.83\theta \le 2\sqrt2 \approx 2.83. Para θ\theta pequeño, ∣R∣≈1−θ6/144\lvert R\rvert \approx 1 - \theta^6/144: amortiguamiento débil por paso, que acumulado en t/ht/h pasos da el decaimiento e−th5ω6/144e^{-t h^5\omega^6/144}. Es la deriva secular de energía de RK4.

4. (Estimador de error). Para un par encajado de órdenes pp y p^=p−1\hat p = p - 1, demuestra que yn+1−y^n+1y_{n+1} - \hat y_{n+1} es una estimación asintóticamente correcta del error local de y^n+1\hat y_{n+1} pero no del de yn+1y_{n+1}, y explica por qué, aun así, se propaga yn+1y_{n+1}.

Ver solución

Sea y(tn+1)y(t_{n+1}) la solución exacta local. Entonces yn+1−y(tn+1)=O(hp+1)y_{n+1} - y(t_{n+1}) = O(h^{p+1}) y y^n+1−y(tn+1)=ℓ^+O(hp+1)\hat y_{n+1} - y(t_{n+1}) = \hat\ell + O(h^{p+1}) con ℓ^=O(hp)\hat\ell = O(h^{p}) el término principal del error local del método de orden p^\hat p. Restando, yn+1−y^n+1=−ℓ^+O(hp+1)y_{n+1} - \hat y_{n+1} = -\hat\ell + O(h^{p+1}): coincide con el error de y^\hat y al orden dominante, mientras que el de yy es de un orden superior y queda enmascarado. Se propaga yn+1y_{n+1} («extrapolación local») porque es más preciso; el precio es que el paso se controla con una estimación conservadora: el error real cometido es menor que el estimado. Es lo que hace que en la tabla 5.2 el error global se parezca más a tol\mathrm{tol} que a tol4/5\mathrm{tol}^{4/5}.

5. (Ley de control). Supón que err(h)=Kh5\mathrm{err}(h) = K h^{5} exactamente. Demuestra que, tras un rechazo, el nuevo paso h′=0.9 h err−1/5h' = 0.9\,h\,\mathrm{err}^{-1/5} se acepta siempre, y calcula cuánto desperdicia el factor 0.9 en el número de pasos.

Ver solución

err(h′)=K(0.9h)5err−1=0.95⋅Kh5/err=0.95=0.59<1\mathrm{err}(h') = K (0.9 h)^5\mathrm{err}^{-1} = 0.9^5\cdot K h^5/\mathrm{err} = 0.9^5 = 0.59 \lt 1: aceptado. Sin el factor el paso daría exactamente err=1\mathrm{err} = 1, en el límite. Con factor 0.9, el paso es un 10 % menor y hacen falta un 11 % más de pasos (1/0.91/0.9). En la realidad KK varía a lo largo de la órbita (crece hacia el pericentro) y el modelo err=Kh5\mathrm{err} = K h^5 falla justo donde importa: de ahí los rechazos de la tabla a tolerancia laxa.

6. (Computacional: tabla de orden). Implementa Euler, RK4 y Dormand–Prince de paso fijo y reproduce la tabla 5.1 para e=0.5e = 0.5. Luego estima el orden empírico p=log⁡2(err(h)/err(h/2))p = \log_2\left(\mathrm{err}(h)/\mathrm{err}(h/2)\right) fila a fila y explica las desviaciones respecto de 1, 4 y 5.

Ver solución

Pseudocódigo (Python):

import numpy as np
mu = 1.0
def f(t, y):
    r3 = np.hypot(y[0], y[1])**3
    return np.array([y[2], y[3], -mu*y[0]/r3, -mu*y[1]/r3])
def rk4(f, t, y, h):
    k1 = f(t, y); k2 = f(t+h/2, y+h/2*k1); k3 = f(t+h/2, y+h/2*k2); k4 = f(t+h, y+h*k3)
    return y + h/6*(k1 + 2*k2 + 2*k3 + k4)
def orbita(paso, n, e=0.5):
    y = np.array([1-e, 0, 0, np.sqrt((1+e)/(1-e))]); h = 2*np.pi/n
    for k in range(n): y = paso(f, k*h, y, h)
    return np.hypot(y[0]-(1-e), y[1])      # tras T la sonda vuelve al pericentro
for n in [100, 200, 400, 800, 1600]:
    print(n, orbita(rk4, n), orbita(rk4, n)/orbita(rk4, 2*n))

Para Dormand–Prince se copian los coeficientes de rungekutta.ts (tabla 2 de Dormand & Prince 1980). Órdenes empíricos de nuestra tabla: Euler 0.52, 0.56, 0.64, 0.76, 0.88, 0.96 (tiende a 1 por debajo: el error es O(1)O(1) y la expansión asintótica no vale); RK4 4.4, 4.2, 4.1, 4.1, 4.0, 4.0; DP5 4.9, 5.2, 5.2, 5.1, 5.2 y luego 0.2 (redondeo). Los valores algo mayores que pp en RK4 y DP5 a paso grueso provienen de los términos de orden superior del error, que decaen más deprisa.

7. (Computacional: paso adaptativo). Implementa el controlador de §3.2 sobre Dormand–Prince e integra la órbita e=0.9e = 0.9 una vuelta con tol=10−6,10−8,10−10\mathrm{tol} = 10^{-6}, 10^{-8}, 10^{-10}. Registra hh en función de la anomalía verdadera y comprueba que h∝r3/2h \propto r^{3/2} aproximadamente. ¿Por qué ese exponente?

Ver solución

El error local de un método de orden 5 escala como h6 ∥y(6)∥h^6\,\lVert y^{(6)}\rVert y las derivadas de la solución kepleriana escalan con la frecuencia local Ω(r)=μ/r3\Omega(r) = \sqrt{\mu/r^3}: ∥y(6)∥∼Ω6∥y∥\lVert y^{(6)}\rVert \sim \Omega^6\lVert y\rVert. Imponer error local constante da h Ω≈h\,\Omega \approx const, es decir h∝r3/2h \propto r^{3/2}. Entre el apocentro (r=1.9r = 1.9) y el pericentro (r=0.1r = 0.1) el cociente de pasos esperado es 193/2≈8319^{3/2} \approx 83; el cociente medido entre el paso máximo y el mínimo fue 2200 porque el mínimo ocurre justo en el pericentro, donde además las componentes de yy son pequeñas y la tolerancia relativa muerde más, y el máximo lo fija el límite de crecimiento ×5\times 5 por paso al alejarse. (Es un buen ejercicio graficar h(ν)h(\nu) en escala logarítmica.)

✦ Autoevaluación

  1. 1. Un método tiene error local O(h⁵). Su error global en un intervalo fijo es, en general, de orden…
  2. 2. ¿Qué estima la diferencia entre las dos soluciones de un par encajado como Dormand–Prince 5(4)?
  3. 3. Si al dividir el paso por 2 el error se divide por 32, el método es de orden…
  4. 4. En una órbita de excentricidad 0.9 el paso adaptativo se hace más pequeño…
  5. 5. ¿Qué propiedad se pierde al usar paso adaptativo con un integrador simpléctico?
  6. 6. Pedir una tolerancia de 10⁻¹⁵ en doble precisión…
Responde todas para comprobar.

Lecturas

  • Hairer, Nørsett & Wanner (1993), Solving ODEs I: §II.1 (Runge–Kutta y teoría de Butcher), §II.3 (convergencia), §II.4 (estimación del error, control de paso, controlador PI de Gustafsson), §II.5 (tabla de Dormand–Prince).
  • Press et al. (2007), Numerical Recipes, 3.ª ed.: §17.1–17.2 (StepperDopr5, control de paso).
  • Dormand & Prince (1980), J. Comput. Appl. Math. 6, 19–26 (tabla 2: coeficientes RK5(4)7M). Fehlberg (1969), NASA TR R-315 (tabla III).
  • Hairer, Lubich & Wanner (2006), Geometric Numerical Integration: §VIII.2 (por qué el paso variable destruye la simplecticidad y cómo recuperarla con transformaciones de tiempo).
  • Murray & Dermott (1999), cap. 2: solución exacta del problema de dos cuerpos usada como referencia.
🍎 Guía para el profesor
Tiempo
2 clases de 90 min
Resultado de aprendizaje
Al finalizar, el estudiante demuestra la relación entre error local y global, deduce las condiciones de orden 2, implementa un par encajado con control de paso y evalúa experimentalmente el orden y el coste de Euler, RK4 y Dormand–Prince en una órbita kepleriana.
Evidencia de aprendizaje
Entrega del problema 6 (tabla de orden con órdenes empíricos) y del problema 7 (gráfica de h frente a la anomalía verdadera), con una discusión de media página sobre qué no controla el paso adaptativo.

Materiales

  • Python 3 con NumPy (o Julia); opcionalmente SciPy para comparar con solve_ivp(method="RK45")
  • Código de referencia: src/lib/math/rungekutta.ts y su test
  • Simulador N cuerpos del portal

Secuencia sugerida

Clase 1 (90 min). Inicio (15 min): el problema de la sonda excéntrica, estimar a mano con hΩ<2.8h\Omega \lt 2.8 cuántos pasos de RK4 harían falta en el pericentro y en el apocentro. Desarrollo (60 min): demostración del teorema de convergencia en pizarra; condiciones de orden 2 derivadas por los estudiantes en parejas (§2.2); presentación de RK4 y su región de estabilidad. Cierre (15 min): problema 1 (Euler en espiral) con cálculo rápido y comprobación en el simulador.

Clase 2 (90 min). Inicio (10 min): «¿cómo sabe el integrador que se equivoca?» (idea del par encajado). Desarrollo (60 min): taller de programación: implementar Dormand–Prince con los coeficientes dados, verificar las sumas de la tabla, reproducir la tabla de orden (problema 6) y añadir el controlador de paso (problema 7). Cierre (20 min): poner en común las gráficas de h(ν)h(\nu), discutir la pérdida de simplecticidad y cuándo se prefiere cada familia de métodos; mini-prueba.

Errores frecuentes

  • Creer que la tolerancia es el error final. Mostrar la tabla 5.2: con tol = 10⁻⁶ el error global es 10⁻³. Pedir que integren dos veces con tolerancias distintas para estimar el error global.
  • Confundir orden del error local y global. Insistir en el teorema de §2: una potencia se pierde al sumar T/h pasos.
  • Reducir el paso «hasta que converja» sin reparar en el redondeo. La fila 6400 de la tabla 5.1 lo muestra: el error deja de bajar.
  • Suponer que Dormand–Prince, por ser de orden 5, conserva la energía mejor que un leapfrog de orden 2 a tiempos largos. Comparar con la lección anterior: el orden alto reduce el error por paso, pero la deriva secular sigue.
  • Olvidar la condición Σⱼ aᵢⱼ = cᵢ al copiar una tabla de Butcher. Hacer que el test de sumas (como en rungekutta.test.ts) forme parte de la entrega.
Palabras clave de esta lección (12)

Términos del glosario que aparecen en el texto. Cada uno enlaza a su ficha completa.

  • Método de Runge–Kutta Una mejora del método de Euler que «prueba» la pendiente en varios puntos intermedios de cada paso y las promedia. El de cuarto orden (RK4) es miles de veces más preciso con el mismo tamaño de paso.
  • Órbita El camino que sigue un cuerpo alrededor de otro por la gravedad: la Luna alrededor de la Tierra, la Tierra alrededor del Sol. Casi todas son elipses, óvalos un poco achatados.
  • Método de Euler La forma más sencilla de simular un movimiento: avanzar en pasitos de tiempo suponiendo que la velocidad no cambia durante cada pasito. Con pasos pequeños funciona, pero el error se acumula.
  • Perihelio El punto de la órbita más cercano al Sol; ahí el planeta va más rápido. La Tierra pasa por él a comienzos de enero. Para la Luna alrededor de la Tierra se llama perigeo.
  • Integrador simpléctico Un método numérico diseñado para que, al simular órbitas durante millones de años, la energía no se escape ni se acumule poco a poco. Por eso se usa para estudiar la estabilidad del Sistema Solar.
  • Afelio El punto de la órbita más lejano del Sol; ahí el planeta va más despacio. Para la Luna alrededor de la Tierra se llama apogeo.
  • Excentricidad Un número entre 0 y 1 que dice cuán achatada es una órbita: 0 es un círculo perfecto, y cuanto más cerca de 1, más alargada. La de la Tierra es 0,017, casi un círculo; la del cometa Halley, 0,97.
  • Problema de dos cuerpos Calcular cómo se mueven dos cuerpos que solo se atraen entre sí, como el Sol y un planeta. Tiene solución exacta: las elipses de Kepler. Con tres cuerpos ya no hay fórmula cerrada.
  • Derivada La rapidez con que cambia algo en un instante: la derivada de la posición es la velocidad, y la de la velocidad, la aceleración. Es la pendiente de la gráfica en cada punto.
  • Ecuación de Kepler La ecuación que dice en qué punto de su elipse está un planeta en una fecha dada. No se puede despejar con álgebra: hay que resolverla por aproximaciones sucesivas, como hacen los programas de astronomía.
  • Perturbación Cualquier «empujoncito» que aparta una órbita de la elipse perfecta: la atracción de otros planetas, el achatamiento de la Tierra, el rozamiento con el aire. Así se descubrió Neptuno, por las perturbaciones en Urano.
  • Caos determinista Un movimiento que sigue reglas exactas pero es imposible de predecir a largo plazo, porque un cambio diminuto al principio produce resultados totalmente distintos. Las órbitas de los planetas son caóticas a escalas de millones de años.

Ver todo el glosario →

Referencias

  • Hairer, E., Nørsett, S. P. & Wanner, G. (1993). Solving Ordinary Differential Equations I: Nonstiff Problems, 2.ª ed. Springer. §II.1 (Runge–Kutta), §II.3 (error global), §II.4 (estimación del error y control de paso), §II.5 (Dormand–Prince).
  • Press, W. H., Teukolsky, S. A., Vetterling, W. T. & Flannery, B. P. (2007). Numerical Recipes, 3.ª ed. Cambridge University Press. §17.1 (Runge–Kutta) y §17.2 (paso adaptativo, Dormand–Prince).
  • Fehlberg, E. (1969). Low-order classical Runge–Kutta formulas with stepsize control and their application to some heat transfer problems. NASA Technical Report R-315.
  • Dormand, J. R. & Prince, P. J. (1980). A family of embedded Runge–Kutta formulae. Journal of Computational and Applied Mathematics 6, 19–26. doi:10.1016/0771-050X(80)90013-3
  • Hairer, E., Lubich, C. & Wanner, G. (2006). Geometric Numerical Integration, 2.ª ed. Springer. §VIII.2 (paso variable y simplecticidad).
  • Murray, C. D. & Dermott, S. F. (1999). Solar System Dynamics. Cambridge University Press. Cap. 2 (problema de dos cuerpos).

Simuladores de esta lección: N cuerpos: integradores y caos