· 6 min read

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. Takže přibližujeme.. krok vpřed v malých přírůstcích, výpočet dalšího stavu 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. Pro kyvadlo 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:

  1. Změřte sklon na začátku kroku → k Poté
  2. Krok na půli cesty pomocí k, změřte sklon tam → k ShemaleZ
  3. Krok na půli cesty pomocí k, změřte znovu → k ″
  4. Krok na konec s použitím k Si, změřte ještě jednou → k
  5. Kombinace: vážený průměr (k mezitím + 2k

Tohle je přesné. Rozdělte velikost kroku a chyba klesne faktorem16. Kyvadlo správně šetří energii pro tisíce houpaček.

Toto tvrzení stojí spíše za prověření než za důvěru. Níže, obě metody integrovat y′ = y od 0 do 1 - kde přesná odpověď je * e * - ve čtyřech krocích velikosti. Polovina kroku dělí Eulerovu chybu asi o2 a RK4 je asi16, což znamená první a čtvrtý řád.

Interactive demo — open in editor pp:PinePaper

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 z toho dělá jazyk - stejná gramatika popisuje počítání ovcí, kyvadlové houpačky 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.

Interactive demo — open in editor pp:PinePaper

Odkazy

  • Řezník, J.C.. (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.
  • Strogatz, S.H.. (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