01 · Punto de partida
Euler mira una vez, RK mira varias
Euler congela f del inicio y salta: si la pendiente cambia en el camino, se pasa. Runge-Kutta prueba f al inicio (k₁), a la mitad (k₂, k₃) y al final (k₄) y promedia: el paso dobla con la curva en vez de seguir la tangente vieja.
El precio son más evaluaciones por paso; el premio es error muchísimo menor con el mismo dt.
- ¿Cuántas etapas pruebo por paso (1, 2, 4)?
- ¿Cómo promedio k₁–k₄ (pesos)?
- ¿Qué orden gano (1, 2, 4)?
- ¿El costo extra se paga con menos pasos?
02 · Definición
¿Qué son los métodos de Runge-Kutta?
La escalera de promedios:
Euler = RK1
Una etapa k₁: x + k₁·dt. Orden 1, error ∝ dt.
Punto medio = RK2
k₁ al inicio, k₂ al medio con k₁: x + k₂·dt. Orden 2, error ∝ dt².
Clásico = RK4
k₁, k₂, k₃, k₄ promediados 1-2-2-1: orden 4, error ∝ dt⁴.
Orden 4 significa: partir dt a la mitad divide el error por 16. Por eso RK4 con dt = 1 supera a Euler con dt = 0,1.
| Método | f por paso | Error |
|---|---|---|
| Euler (RK1) | 1 (10 total) | ≈ 1,4. |
| Punto medio (RK2) | 2 (20 total) | ≈ 0,1. |
| RK4 | 4 (40 total) | ≈ 0,001. |
| Euler dt = 0,1 | 1 (100 total) | ≈ 0,15 (peor y más caro). |
03 · Anatomía
Etapas, pesos y orden
Cómo se construye el promedio:
- Etapa kᵢ
- Una evaluación de f en un punto de prueba: inicio, medio con k₁, medio con k₂, final con k₃.
- Pesos 1-2-2-1
- RK4 pondera el medio doble: k₁ + 2k₂ + 2k₃ + k₄ sobre 6. El medio manda.
- Orden p
- Error ∝ dt^p: partir dt divide el error por 2^p (2, 4, 16). Anticipa el Tema 33.
- Costo honesto
- Pasos × etapas: comparar a igual f totales, no a igual dt.
RK2 (punto medio)
Barato y bueno
2 f por paso, orden 2: con dt = 0,5 ya da 0,03. El caballo de batalla diario.
RK4 (clásico)
Precisión de referencia
4 f por paso, orden 4: con dt = 1 da 0,001. El patrón contra el que se mide todo.
04 · RK en el curso
Dónde el promedio paga
Cada curva sensible agradece etapas:
- 1Logístico.
Curva que se dobla: RK2/RK4 la siguen, Euler se pasa.
- 2Resorte.
Oscilación: RK conserva amplitud y fase mucho mejor.
- 3SIR.
Pico agudo: RK ubica altura y día con menos pasos.
- 4Exponencial.
Despegue: RK4 casi clava con dt = 1.
- 5Sistemas.
Todas las etapas avanzan el vector junto: kᵢ son vectores.
05 · Representación en Python
RK2 y RK4 genéricos
En Python, los tres comparten firma metodo(f, x0, T, dt): solo cambia el interior del paso.
Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Cambiá dt a 0,5 y observá que RK4 ya no se mueve.
import math
def exacta(t, p0=10.0, r=0.5, k=100.0):
return k / (1 + (k - p0) / p0 * math.exp(-r * t))
def rk2(f, x0, t_final, dt):
x, t = x0, 0.0
while t < t_final - 1e-9:
h = min(dt, t_final - t)
k1 = f(x, t)
k2 = f(x + k1 * h / 2, t + h / 2)
x, t = x + k2 * h, t + h
return x
def rk4(f, x0, t_final, dt):
x, t = x0, 0.0
while t < t_final - 1e-9:
h = min(dt, t_final - t)
k1 = f(x, t)
k2 = f(x + k1 * h / 2, t + h / 2)
k3 = f(x + k2 * h / 2, t + h / 2)
k4 = f(x + k3 * h, t + h)
x, t = x + h * (k1 + 2 * k2 + 2 * k3 + k4) / 6, t + h
return x
f = lambda p, t: 0.5 * p * (1 - p / 100)
print(round(exacta(10), 2), round(rk2(f, 10, 10, 1.0), 2), round(rk4(f, 10, 10, 1.0), 4))
Exacta ≈ 94,28 · RK2 ≈ 94,18 · RK4 ≈ 94,277: el promedio paga.
Errores comparados
Los tres errores en una línea deciden:
def euler(f, x0, t_final, dt):
x, t = x0, 0.0
while t < t_final - 1e-9:
h = min(dt, t_final - t)
x, t = x + f(x, t) * h, t + h
return x
ex = exacta(10)
for nombre, m in [("euler", euler), ("rk2", rk2), ("rk4", rk4)]:
print(nombre, round(abs(ex - m(f, 10, 10, 1.0)), 4))
06 · Exploración
Laboratorio: el podio Euler / RK2 / RK4
Logístico con tu dt y tu r (P₀ = 10, K = 100, T = 10). Dorada: exacta. Teal: Euler (se pasa). Naranja: RK2 (casi). Blanca fina: RK4 (pegada). Bajá dt y mirá el podio colapsar: con dt = 0,25 hasta Euler se porta.
Tres métodos, un dt
Logístico · exacta vs Euler vs RK2 vs RK4
Con dt 1: Euler 1,42 · RK2 0,10 · RK4 0,00.
El resaltado engrosa un método para seguirlo entre los demás. RK2 ya gana por 14× con solo el doble de f.
Preguntas para explorar
- Con dt = 2, ¿RK2 sigue cerca? ¿Euler se dispara?
- Con r = 1,0, ¿los errores crecen parejo o Euler sufre más?
- ¿Qué método elegirías con f cara (1 s por evaluación) y error 0,1?
Ver respuestas sugeridas
- RK2 aguanta, Euler se dispara: el promedio protege del paso grande.
- Euler sufre más: la curvatura castiga al que no promedia.
- RK2 con dt = 1 (20 f): Euler necesitaría ~100 f para ese error. Lo barato sale caro.
07 · Comprensión
Confusiones frecuentes
«RK4 es exacto»
No: es preciso (error ∝ dt⁴), no exacto. Con dt = 2 también se nota; con dt = 1 casi no.
«Más etapas siempre ganan»
Solo con f suave: con saltos o ruido, las etapas prueban realidades distintas y el promedio confunde.
«RK2 es la mitad de RK4»
Es orden 2 vs 4: partir dt divide por 4 vs por 16. En dt chico la brecha se agranda, no se achica.
«Comparo errores con igual dt»
Igual dt es desigual costo (1/2/4 f). Lo honesto: igual f totales o igual error pedido.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: un paso RK2 a mano
Desde P = 10 con f = 0,5·P·(1 − P/100) y dt = 1, calculá k₁, k₂ y el salto RK2.
f = lambda p: 0.5 * p * (1 - p / 100)
k1 = f(10)
k2 = f(10 + k1 / 2)
print(round(k1, 2), round(k2, 2), round(10 + k2, 2))
Ver solución
k₁ = 4,5, k₂ ≈ 5,49, salto a 15,49: el promedio ya huele la subida (Euler iba a 14,5).
Ejercicio 2: podio con números
Calculá los tres errores finales con dt = 1 en el logístico (r = 0,5, T = 10). ¿El podio cierra?
import math
def exacta(t):
return 100 / (1 + 9 * math.exp(-0.5 * t))
Ver solución
Usá las funciones del bloque Python (euler, rk2, rk4): errores ≈ 1,42 · 0,10 · 0,00. Podio: Euler lejos, RK2 cerca, RK4 pegada.
Ejercicio 3: orden en vivo
Partí dt de 1 a 0,5 en los tres y medí por cuánto se divide cada error. ¿Da 2, 4 y 16?
Ver una posible respuesta
f2 = lambda p, t: 0.5 * p * (1 - p / 100)
for dt in [1.0, 0.5]:
ee = abs(exacta(10) - euler(f2, 10, 10, dt))
e2 = abs(exacta(10) - rk2(f2, 10, 10, dt))
e4 = abs(exacta(10) - rk4(f2, 10, 10, dt))
print(dt, round(ee, 3), round(e2, 4), round(e4, 6))
Con f2 de dos argumentos: Euler ÷2, RK2 ÷4, RK4 ÷16. Los órdenes firman en vivo.
09 · Síntesis
Ideas para recordar
- RK2 promedia inicio y medio (orden 2); RK4 promedia 1-2-2-1 (orden 4).
- Partir dt divide el error por 2 (Euler), 4 (RK2) o 16 (RK4).
- El costo se cuenta en f: 1/2/4 por paso. Comparar a igual f.
- En Python: misma firma para los tres; kᵢ vectoriales en sistemas.
- Con f suave RK gana lejos; con saltos, Euler corto es más robusto.
En el próximo tema negociaremos el tamaño del paso: error contra costo.