Cómo un péndulo te enseña Ecuaciones diferenciales
No necesitas un grado de matemáticas para entender los solvers de ODE. Necesitas un péndulo, una pantalla y 20 minutos. Así es como Euler, RK4, y los métodos de adaptación realmente funcionan con el código real.
Empieza con lo que puedes ver
Cuelga un peso de una cuerda. Tíralo a un lado. Suéltame. Se balancea.
Acabas de crear un sistema gobernado por una ecuación diferencial:
dθ/dt = ω dω/dt = -(g/L) · sin(θ)
θ es el ángulo. ω es la velocidad angular. g es gravedad (9,81 m/s2). L es la longitud de la cuerda. Estas dos líneas dicen: el ángulo cambia a una velocidad igual a la velocidad, y la velocidad cambia a una velocidad que depende de la gravedad, la longitud y el ángulo actual.
El problema: no podemos resolver esta ecuación exactamente. El sin(θ) hace que no sea lineal. No hay fórmula que te dé θ en cualquier momento. Así que aproximamos — avanzamos en pequeños incrementos, computando el siguiente estado desde el actual.
Eso es lo que hace un solucionador de ODE. Y hay mejores y peores formas de hacerlo.
El método Euler: Obvio pero Flawed
La idea más simple: si conozco el estado ahora, y conozco la tasa de cambio, puedo estimar el estado un pequeño paso más tarde.
next_angle = current_angle + velocity × dt
next_velocity = current_velocity + acceleration × dt
Este es el método de Euler. Es como caminar a través de la niebla: puedes ver un paso adelante, así que das ese paso, luego mira de nuevo. En código:
function euler(f, t, y, dt) {
const dy = f(t, y);
return [
y[0] + dt * dy[0],
y[1] + dt * dy[1]
];
}
El problema: El método de Euler es correcto de primera orden. Eso significa que si atraviesas el tamaño del paso, amalgamas el error. Para un péndulo, este error se acumula — el péndulo simulado lentamente gana energía y oscila más ancho y más ancho. Después de unos minutos, gira en círculos completos. Un verdadero péndulo nunca hace esto.
RK4: El caballo de trabajo
En 1901, Carl Runge y Martin Kutta publicaron un mejor método. En lugar de mirar la tasa de cambio una vez por paso, mírala cuatro veces:
- Medir la pendiente al inicio del paso → k1
- Paso a mitad de camino usando k1, medir la pendiente allí → k2
- Paso a mitad de camino usando k2, medida de nuevo → k3
- Paso al final usando k3, mide una vez más → k4
- Combinación: promedio ponderado (k1 + 2k2 + 2k3 + k4) / 6
Esto es correcto de cuarto orden. Halve the step size and the error drops by a factor of 16. El péndulo conserva la energía correctamente para miles de columpios.
function rk4(f, t, y, dt) {
const k1 = f(t, y);
const k2 = f(t + dt/2, [y[0] + dt/2 * k1[0], y[1] + dt/2 * k1[1]]);
const k3 = f(t + dt/2, [y[0] + dt/2 * k2[0], y[1] + dt/2 * k2[1]]);
const k4 = f(t + dt, [y[0] + dt * k3[0], y[1] + dt * k3[1]]);
return [
y[0] + (dt/6) * (k1[0] + 2*k2[0] + 2*k3[0] + k4[0]),
y[1] + (dt/6) * (k1[1] + 2*k2[1] + 2*k3[1] + k4[1])
];
}
Este es el método PinePaper utiliza para simulaciones de péndulo, masa de primavera y Van der Pol. Es el mismo método utilizado en cálculos de trayectoria aeroespacial. 22 líneas de código.
Por qué esto importa física exterior
El péndulo es un ejemplo de enseñanza. Pero la misma técnica —paso, medida, correcto— se aplica en cualquier lugar que tenga una tasa de cambio:
- ** Crecimiento de la población**: dx/dt = r·x·(1 - x/K). Crecimiento logístico con capacidad de carga. El mismo solucionador.
- Reacciones químicas: las concentraciones cambian a tasas proporcionales a las concentraciones actuales. El mismo solucionador.
- Las redes neuronales: el descenso de gradiente es un ODE discretizado. Cada paso de entrenamiento es un paso Euler a lo largo de la superficie de pérdida.
- Economía: compuestos de interés continuamente a través de dy/dt = r·y. El crecimiento exponencial es el ODE más simple.
- Tiempo de animación: Las curvas de alivio son soluciones a los ODEs de primavera-damper. Los ajustes "elásticos" y "bounce" en CSS son simulaciones físicas.
Las matemáticas no cambian. El dominio sí. Eso es lo que lo convierte en un lenguaje: la misma gramática describe el conteo de ovejas, los columpios de péndulo y el entrenamiento de redes neuronales.
Pruébalo tú mismo
Abra PinePaper y seleccione el generador de sistema dinámico. Elige "pendulum". El bob swings. Ahora cambie los parámetros:
- Aumentar la gravedad → swing más rápido (período corto)
- Aumentar la longitud de la varilla → swing más lento (período de la ira)
- Iniciar en un ángulo más grande → ver cómo aumenta el período (efecto no lineal que falta la aproximación del pequeño ángulo del libro de texto)
Cada cambio que haces es una medida. Cambió un parámetro y observó el resultado. El solucionador RK4 recomputó 30 marcos por segundo, y el péndulo le mostró lo que la ecuación predice.
Eso es todo. La matemática es la medición. PinePaper lo hace visible.
{{widget:pendulum-lab}
Referencias
- Carnicero, J.C. (2016). * Métodos numéricos para Ecuaciones Diferentes Ordinarias* (3a edición). Wiley.
- Dormand, J.R. " Prince, P.J. (1980). Una familia de fórmulas de Runge-Kutta incrustadas. Journal of Computational and Applied Mathematics, 6(1), 19-26.
- Euler, L. (1768). Institutionum calculi integralis, Vol. 1. Impensis Academiae Imperialis Scientiarum.
- Hairer, E., Nørsett, S.P., " Wanner, G. (1993). Ecuaciones diferenciales ordinarias I: Problemas no arancelarios (2a edición). Springer.
- Kutta, W. (1901). Beitrag zur näherungsweisen Integration totaler Differentialgleichungen. Zeitschrift für Mathematik und Physik, 46, 435-453.
- Newton, I. (1687). Philosophiæ Naturalis Principia Mathematica. Londres: Joseph Streater.
- Runge, C. (1895). Über die numerische Auflösung von Differentialgleichungen. Mathematische Annalen, 46(2), 167-178.
- Strogatz, S.H. (2015). * Dinámica no lineal y caos* (2a edición). Westview Press.
El solucionador ODE dePinePaper cubre Euler, RK4, y adaptive Dormand-Prince RK45 en unas 200 líneas. Pruebe la simulación del péndulo gratis en pinepaper.studio/editor.
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor