· 5 min read

Hogyan egy inga megtanítja a differenciálegyenletek

Nem kell matekdiploma ahhoz, hogy megértsd az ODE megoldásait. Kell egy inga, egy képernyő és 20 perc. Így működik Euler, RK4 és adaptív módszerek az igazi kóddal.

Kezdd azzal, amit látsz

Egy madzagot. Húzd az egyik oldalra. Engedd el! Hintázik.

Épp most hozott létre egy rendszert, amit differenciál egyenlet vezérel:

unit description in lists d№ / dt = - (g / l) · sin (θ)

ez a szög. - A szögsebesség. g a gravitáció (9,81 m / s ²). L a húr hossza. Ez a két sor azt mondja: a szög a sebességnek megfelelő sebességgel változik, a sebesség pedig a gravitációtól, a hossztól és az aktuális szögtől függően.

A probléma: nem tudjuk pontosan megoldani ezt az egyenletet. Az sin(θ) nem lineáris. Nincs olyan formula, ami bármikor bevállalná. Megközelítjük tehát - kis lépésekben haladunk előre, a következő államot a jelenlegi állapotból számolva ki.

Ez az, amit egy ODE megoldás csinál. És vannak jobb és rosszabb módszerek is.

Az Euler módszer: Nyilvánvaló, de hibás

A legegyszerűbb ötlet: ha most ismerem az államot, és ismerem a változás ütemét, egy kis idővel később megbecsülhetem az államot.

next_angle = current_angle + velocity × dt
next_velocity = current_velocity + acceleration × dt

Ez Euler módszere. Olyan ez, mint a ködben sétálni: egy lépéssel előrébb látsz, így megteszed azt a lépést, aztán újra megnézed. Kód:

function euler(f, t, y, dt) {
  const dy = f(t, y);
  return [
    y[0] + dt * dy[0],
    y[1] + dt * dy[1]
  ];
}

A probléma: Euler módszere első-sorrend pontos. Ez azt jelenti, ha felezed a lépés méretét, felezed a hibát. Az inga esetében ez a hiba halmozódik fel - a szimulált inga lassan energiát szerez, és egyre szélesebbre és szélesebbé válik. Pár perc múlva már teljes körökben forog. Egy igazi inga sosem csinál ilyet.

RK4: A munkaló

1901-ben Carl Runge és Martin Kutta egy jobb módszert adott ki. Ahelyett, hogy lépésenként egyszer megnéznénk a változás sebességét, négyszer nézzük meg:

  1. Mérjük meg a lejtő elején a lépés → k
  2. Félúton halad a k 'm, mérje meg a lejtő → k' m
  3. Lépés félúton, újra intézkedés →
  4. Lépés a végsőkig, mérjük még egyszer → k
  5. Kombináció: súlyozott átlag (k) (k) + 2k) / 6

Ez a negyedik parancs. Fele a lépés mérete és a hiba csökken egy tényező 16. Az inga több ezer hintához megfelelő energiát biztosít.

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])
  ];
}

Ez a PinePaper módszer az inga, a spring- tömeg és a Van der Pol szimulációkhoz. Ugyanaz a módszer, mint az űrröppálya számításoknál. 22 sor kód.

Miért számít ez kívül fizika

Az inga tanítási példa. De ugyanaz a technika - lépés előre, intézkedés, helyes - érvényes bárhol van a változás mértéke:

      • Népességnövekedés * *: dx / dt = r · x · (1 - x / K). Logisztikai növekedés teherbírással. Ugyanaz a megoldás.
      • Kémiai reakciók * *: a koncentrációk a jelenlegi koncentrációkkal arányosan változnak. Ugyanaz a megoldás.
      • Neurális hálózatok * *: gradiens leereszkedés egy diszkrét ODE. Minden képzési lépés egy Euler lépés a veszteség felületén.
      • Economics * *: kamatok folyamatosan keresztül dy / dt = r · y. Az exponenciális növekedés a legegyszerűbb ODE.
      • Animációs időzítés * *: a lazító görbék a spring- csillapító OSE-k megoldásai. A CSS-ben található "rugalmas" és "ugráló" eszközök fizikai szimulációk.

A matek nem változik. A domain igen. Ez teszi nyelvévé - ugyanaz a nyelvtan írja le a juhok számlálását, az ingahullámokat és az ideghálózati képzést.

Próbáld meg magad

Nyissa meg a PinePaper-et és válassza ki a Dinamikus Rendszer generátort. Válassza ki az "ingát". A Bob hinták. Most változtasd meg a paramétereket:

  • Növelje a gravitációt → gyorsabb lendítés (rövidebb időszak)
  • Növelje rúd hossza → lassabb swing (hosszabb ideig)
  • Kezdés egy nagyobb szög → nézni, hogy az időszak növekszik (nem lineáris hatás, hogy a tankönyv kis szög közelítés hiányzik)

Minden változtatásod csak egy mérés. Megváltoztattál egy paramétert, és megfigyelted az eredményt. Az RK4 oldó másodpercenként 30 képkockát számított ki, és az inga megmutatta, mit jósol az egyenlet.

Ez a lényeg. A matematika a mérés. PinePaper teszi láthatóvá.

{{widget: pendulum- lab}

Hivatkozások

  • Hentes, J.C. (2016). * Numerical Methods for Normal Differential Equations * (3rd ed.). Wiley.
  • Dormand, J.R. & Prince, P.J. (1980). Egy beágyazott Runge- Kutta képletek családja. * Journal of Computational and Applied Mathematics *, 6 (1), 19- 26.
  • Euler, L. (1768). * Institutionum calculi integral *, Vol. 1. Impensis Academiae Imperialis Scientiarum.
  • Hairer, E., Nørsett, S.P., & Wanner, G. (1993). * Solving Normal Differential Equations I: Nonstrong Problems * (2nd ed.). Springer.
  • Kutta, W. (1901). Beitrag zur näherungsweisen Integration totaler Differentialgleichungen. * Zeitschrift für Mathematik und Physik *, 46, 435- 453.
  • Newton, I. (1687). * Philosophiae Naturalis Mediteria Mathematica *. London: Joseph Streater.
  • Runge, C. (1895). Über die numerische Auflösung von Differentialgleichungen. * Mathematische Annalen *, 46 (2), 167-178.
  • Strogatz, S.H. (2015). * Nem lineáris Dynamics and Chaos * (2nd ed.). Westview Press.

  • PinePaper ODE megoldás fedi Euler, RK4, és adaptív Dormand- Prince RK45 mintegy 200 sorban. Próbálja meg az inga szimulációt ingyen a [pinepaper.studio / editor] (/editor) címen

Ready to create?

Start making animated GIFs, videos, and graphics — free, no signup.

Open PinePaper Editor