Jak kyvadlo učí diferenciální rovnice
Nepotřebuješ matematický titul, abys pochopil ODE řešitele. Potřebujete kyvadlo, obrazovku a 20 minut. Zde je, jak Euler, RK4, a adaptivní metody skutečně fungují - se skutečným kódem.
Začněte s tím, co vidíte
Pověste závaží na provázku. Zatáhni to na jednu stranu. Pusť mě. Houpe se.
Právě jste vytvořili systém řízený diferenciální rovnicí:
dθ / dt = ω dω / dt = - (g / L) · sin (θ)
to je úhel. ω je úhlová rychlost. g je gravitace (9,81 m / s ²). L je délka řetězce. Tyto dvě čáry říkají: úhel se mění rychlostí rovnající se rychlosti a rychlost se mění rychlostí, která závisí na gravitaci, délce a současném úhlu.
Problém: tuto rovnici nemůžeme přesně vyřešit. sin(θ) to dělá nelineární. Neexistuje žádný vzorec, který by vám dal θ kdykoliv t. Přiblížíme se - vykročíme vpřed v malých krocích, počítáme další stav ze současného.
To je to, co řešitel ODE dělá. A existují lepší a horší způsoby, jak to udělat.
Eulerova metoda: jasná, ale chybná
Nejjednodušší myšlenka: pokud znám stav nyní, a znám rychlost změny, mohu odhadnout stav malý časový krok později.
next_angle = current_angle + velocity × dt
next_velocity = current_velocity + acceleration × dt
Tohle je Eulerova metoda. Je to jako procházet mlhou: můžete vidět jeden krok vpřed, takže uděláte tento krok, pak se podívejte znovu. Kód:
function euler(f, t, y, dt) {
const dy = f(t, y);
return [
y[0] + dt * dy[0],
y[1] + dt * dy[1]
];
}
Problém: Euler metoda je první-pořadí přesné. To znamená, že když snížíte velikost kroku, snížíte chybu. U kyvadla se tato chyba hromadí - simulované kyvadlo pomalu získává energii a houpe se dál a dál. Po pár minutách se točí v plném kruhu. Skutečný kyvadlo tohle nikdy nedělá.
RK4: Workhorse
V roce 1901 Carl Runge a Martin Kutta vydali lepší metodu. Místo pohledu na rychlost změny jednou za krok, podívejte se na to čtyřikrát:
- Změřte sklon na začátku kroku → k Poté
- Krok na půli cesty pomocí k, změřte sklon tam → k ShemaleZ
- Krok na půli cesty pomocí k, změřte znovu → k ″
- Krok na konec s použitím k Si, změřte ještě jednou → k
- Kombinace: vážený průměr (k mezitím + 2k
Tohle je přesné. Rozdělte velikost kroku a chyba klesne faktorem 16. Kyvadlo správně šetří energii pro tisíce houpaček.
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])
];
}
To je metoda PinePaper používá pro kyvadlo, spring- hmotnost, a Van der Pol simulace. Je to stejná metoda, která se používá při výpočtech letecké dráhy. 22 řádků kódu.
Proč to záleží mimo fyziku
Kyvadlo je příklad výuky. Ale stejná technika - krok vpřed, opatření, správná - platí všude, kde máte rychlost změny:
- Populační růst * *: dx / dt = r · x · (1 - x / K). Logistický růst s nosností. Stejný řešitel.
- Chemické reakce * *: koncentrace se mění rychlostí úměrnou současným koncentracím. Stejný řešitel.
- Neurální sítě * *: gradient sestup je diskrétní ODE. Každý výcvikový krok je Euler krok podél ztrátové plochy.
- Economics * *: interest compounds continuous via dy / dt = r · y. Exponenciální růst je nejjednodušší ODE.
- Načasování animace * *: uvolňující křivky jsou řešením pro Spring- tlumiče ODE. "elastické" a "skákací" délky v CSS jsou fyzické simulace.
Matematika se nemění. Doména ano. To je to, co z něj dělá jazyk - stejná gramatika popisuje počítání ovcí, kyvadla a trénink nervové sítě.
Zkus to sám
Otevřete PinePaper a vyberte generátor Dynamic System. Vyberte "kyvadlo". Bob se houpe. Nyní změňte parametry:
- Zvýšení gravitace → rychlejší houpání (kratší období)
- Zvýšení délky tyče → pomalejší houpání (delší období)
- Začněte ve větším úhlu → Podívejte se, jak se perioda zvyšuje (nelineární efekt, že učebnice malé-úhel sbližování chybí)
Každá změna, kterou uděláte, je měření. Změnili jste parametr a pozorovali výsledek. Řešitel RK4 přepočítal 30 snímků za sekundu a kyvadlo vám ukázalo, co rovnice předpovídá.
O to jde. Matematika je měření. PinePaper to zviditelňuje.
{widget: pendulum- lab}}
Odkazy
- (2016). * Numerické metody pro běžné diferenciální rovnice * (3rd ed.). Wiley.
- Dormand, J.R. & Prince, P.J. (1980). Rodina vložených vzorců Runge- Kutta. * 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). * Řešení běžných diferenciálních rovnic I: Nontush problems * (2nd ed.). Springer.
- Kutta, W. (1901). Beitrag zur näherungsweisen Integration totaller Differentialgleichungen. * Zeitschrift für Mathematik und Physik *, 46, 435-453.
- Newton, I (1687). * Philosophiæ Naturalis Principia Mathematica *. London: Joseph Streater.
- Runge, C. (1895). Über die numische Auflösung von Differentialgleichungen. * Mathematische Annalen *, 46 (2), 167-178.
- (2015). * Nonlinear Dynamics and Chaos * (2nd ed.). Westview Press.
- PinePaper je OSE řešitel pokrývá Euler, RK4, a adaptivní Dormand- Prince RK45 v cca 200 řádcích. Zkuste simulaci kyvadla zdarma na [pinepaper.studio / editor] (/editor). *
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor