· 5 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. 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:

  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 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