Como um pêndulo te ensina equações diferenciais
Você não precisa de um diploma de matemática para entender os solucionadores ODE. Precisas de um pêndulo, um ecrã e 20 minutos. Aqui está como Euler, RK4, e métodos adaptativos realmente funcionam — com o código real.
Comece com o que pode ver
Pendure um peso de uma corda. Puxa para um lado. Larga-me. Balança.
Você acabou de criar um sistema governado por uma equação diferencial:
dω/dt = ω dω/dt = -(g/L) · sin(γ)
é o ângulo. ω é a velocidade angular. g é a gravidade (9,81 m/s2). L é o comprimento da corda. Estas duas linhas dizem: o ângulo muda a uma taxa igual à velocidade, e a velocidade muda a uma taxa que depende da gravidade, comprimento e o ângulo de corrente.
O problema: não podemos resolver esta equação exatamente. O sin(θ) torna-o não linear. Não há nenhuma fórmula que lhe dê a qualquer momento t. Então nos aproximamos — avançamos em pequenos incrementos, calculando o próximo estado do atual.
Isso é o que um solucionador ODE faz. E há maneiras melhores e piores de o fazer.
O método de Euler: Óbvio, mas desaprovado
A idéia mais simples: se eu conheço o estado agora, e eu sei a taxa de mudança, eu posso estimar o estado um pequeno passo de tempo mais tarde.
next_angle = current_angle + velocity × dt
next_velocity = current_velocity + acceleration × dt
Este é o método de Euler. É como caminhar através do nevoeiro: você pode ver um passo à frente, então você dá esse passo, e então olhar novamente. Em código:
function euler(f, t, y, dt) {
const dy = f(t, y);
return [
y[0] + dt * dy[0],
y[1] + dt * dy[1]
];
}
O problema: O método de Euler é preciso de primeira ordem. Isso significa que se você reduzir para metade o tamanho do passo, você reduzirá para metade o erro. Para um pêndulo, este erro se acumula — o pêndulo simulado lentamente ganha energia e oscila mais e mais. Depois de alguns minutos, está a girar em círculos. Um verdadeiro pêndulo nunca faz isto.
RK4: O cavalo de trabalho
Em 1901, Carl Runge e Martin Kutta publicaram um método melhor. Em vez de olhar para a taxa de mudança uma vez por passo, olhe para ela quatro vezes:
- Medir a inclinação no início do passo → k1
- Passo a meio usando k1, medir a inclinação lá → k2
- Passo a meio usando k2, medir novamente → k3
- Passo para o fim usando k3, medir mais uma vez → k4
- Combinação: média ponderada (k1 + 2k2 + 2k3 + k4) / 6
Esta é a quarta ordem precisa. Metade do tamanho do passo e o erro cai por um fator de 16. O pêndulo conserva energia corretamente para milhares de balanços.
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 é o método que o PinePaper usa para simulações de pêndulo, mola-massa e Van der Pol. É o mesmo método usado nos cálculos de trajectória aeroespacial. 22 linhas de código.
Por que isso importa fora da Física
O pêndulo é um exemplo de ensino. Mas a mesma técnica — passo à frente, medida, correta — aplica-se em qualquer lugar que você tem uma taxa de mudança:
- ** Crescimento populacional**: dx/dt = r·x·(1 - x/K). Crescimento logístico com capacidade de transporte. Mesmo solucionador.
- Reações químicas: as concentrações mudam a taxas proporcionais às concentrações atuais. Mesmo solucionador.
- Redes neurais: descida de gradiente é uma ODE discretizada. Cada passo de treinamento é um passo Euler ao longo da superfície de perda.
- ** Economia**: compostos de interesse continuamente via dy/dt = r·y. O crescimento exponencial é a ODE mais simples.
- ** Timing de animação**: curvas de facilitação são soluções para ODEs mola-damper. As facilidades "elásticas" e "de salto" em CSS são simulações físicas.
A matemática não muda. O domínio tem. É isso que a torna uma linguagem — a mesma gramática descreve a contagem de ovelhas, as oscilações de pêndulo e o treinamento em rede neural.
Tente você mesmo
Abra o PinePaper e selecione o gerador do sistema dinâmico. Escolhe "pêndulo". O Bob balança. Agora altere os parâmetros:
- Aumentar a gravidade → balanço mais rápido (período mais curto)
- Aumentar o comprimento da haste → balanço mais lento (período mais longo)
- Comece em um ângulo maior → observe como o período aumenta (efeito não linear que a aproximação de pequeno ângulo do livro didático falha)
Cada mudança que você faz é uma medida. Você mudou um parâmetro e observou o resultado. O solucionador RK4 recompôs 30 quadros por segundo, e o pêndulo mostrou o que a equação prevê.
Essa é a questão. Matemática é medida. O PinePaper torna-o visível.
{{widget:pendulum- lab}}
Referências
- Butcher, J.C. (2016). *Métodos numéricos para Equações Diferenciais Ordinárias. Wiley.
- Dormand, J.R. & Prince, P.J. (1980). Uma família de fórmulas Runge-Kutta incorporadas. Journal de Matemática Computacional e Aplicada, 6.1, 19-26.
- Euler, L. (1768). * Institutionum calculi integralis*, Vol. 1. Impensis Academiae Imperialis Scientiarum.
- Hailer, E., Nørsett, S.P., & Wanner, G. (1993). * Solucionando Equações Diferenciais Ordinárias I: Problemas Não-Stiff* (2nd ed.). Springer.
- Kutta, W. (1901). Beitrag zur näherungsweisen Integration totaler Diferencialgleichungen. 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 Diferencialgleichungen. * Mathematische Annalen*, 46(2), 167-178.
- Strogatz, S.H. (2015). Dinâmica não linear e Caos (2nd ed.). Westview Press.
- O solucionador ODE da PinePaper cobre Euler, RK4, e Dormand-Prince RK45 adaptativo em cerca de 200 linhas. Experimente a simulação de pêndulo livre em pinepaper.studio/editor.*
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor