· 5 min read

Cum te învaţă un pendulum ecuaţii diferite

Nu aveți nevoie de o diplomă de matematică pentru a înțelege rezolvatorii ODE. Ai nevoie de un pendul, un ecran şi 20 de minute. Iată cum Euler, RK4 și metodele adaptive funcționează de fapt .

Începeţi cu ceea ce puteţi vedea

Atârnă o greutate de o sfoară. Trage-l într-o parte. Dă-mi drumul. Se leagănă.

Tocmai ai creat un sistem guvernat de o ecuaţie diferenţială:

dθ/dt = ω dω/dt = - (g/l) · păcat (θ)

θ este unghiul. ω este viteza unghiulară. g este gravitatea (9,81 m/s2). L este lungimea corzilor. Aceste două linii spun: unghiul se schimbă cu o viteză egală cu viteza, iar viteza se schimbă cu o viteză care depinde de gravitație, lungime și unghiul curent.

Problema: nu putem rezolva această ecuație exact. sin(θ) îl face neliniar. Nu există nicio formulă care să-ţi dea θ în orice moment. Prin urmare, ne apropiem de .

Asta este ceea ce un rezolvator ODE face. Și există modalități mai bune și mai rele de a face acest lucru.

Metoda Euler: evidentă, dar arsă

Cea mai simplă idee: dacă știu statul acum și știu rata schimbării, pot estima statul un pas mic mai târziu.

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

Asta e metoda lui Euler. Este ca mersul pe jos prin ceață: puteți vedea un pas înainte, astfel încât să luați acel pas, apoi uita-te din nou. În cod:

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

Problema este că metoda lui Euler este foarte exactă. Asta înseamnă că dacă înjumătățești mărimea pasului, înjumătățești eroarea. Pentru un pendul, această eroare se acumulează După câteva minute, se învârte în cerc. Un pendul adevărat nu face niciodată asta.

RK4: Calul de lucru

În 1901, Carl Runge și Martin Kutta au publicat o metodă mai bună. În loc să se uite la rata de schimbare o dată pe pas, uita-te la ea de patru ori:

  1. Se măsoară panta la începutul etapei → k1
  2. Pas la jumătatea drumului folosind k1, măsura panta acolo → k2
  3. Pas la jumătatea drumului folosind k2, măsură din nou → k3
  4. Pas până la capăt utilizând k3, măsurați încă o dată → k4
  5. Combinație: medie ponderată (k1 + 2k2 + 2k3 + k4) / 6

Acest lucru este exact al patrulea ordin. Se înjumătățește dimensiunea pasului și eroarea scade cu un factor de 16. Pendulul conservă energia corect pentru mii de leagăne.

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

Aceasta este metoda de utilizare PinePaper pentru pendul, primavara-masa, si Van der Pol simulări. E aceeaşi metodă folosită în calculele traiectoriei aerospaţiale. 22 de linii de cod.

De ce contează acest lucru în afara fizicii

Pendulul este un exemplu de predare. Dar aceeasi tehnica pas înainte, măsură, corect se aplică oriunde aveți o rată de schimbare:

  • Creşterea populaţiei: dx/dt = r·x·(1 - x/K). Creștere logică cu capacitate de transport. Aceeaşi soluţie.
  • ** Reacţii chimice**: concentraţiile se modifică la rate proporţionale cu concentraţiile actuale. Aceeaşi soluţie.
  • Reţele neurale: coborârea gradientului este un ODE discretizat. Fiecare pas de formare este un pas Euler de-a lungul suprafeței pierderii.
  • Economics: interes compounds continue via dy/dt = r·y. Creşterea exponenţială este cea mai simplă ODE.
  • ** Sincronizare animație**: ușurarea curbelor sunt soluții la ODE-urile de primăvară-damper. "Elastic" și "buunce" Easing în CSS sunt simulări fizice.

Matematica nu se schimbă. Domeniul are. Aceasta este ceea ce o face o limbă .

Încearcă şi tu

Deschideţi PinePaper şi selectaţi generatorul de sistem dinamic. Alege "pendulum." Bob se leagănă. Acum schimba parametrii:

  • Creșterea gravitației → leagăn mai rapid (perioadă mai scurtă)
  • Crește lungimea tijei → leagăn lent (perioadă mai lungă)
  • Începeți de la un unghi mai mare → urmăriți modul în care crește perioada (efect nonliniar pe care manualul de aproximare unghi mic ratează)

Fiecare schimbare pe care o faci este o măsurătoare. Ai schimbat un parametru şi ai observat rezultatul. Rezolvatorul RK4 a rezumat 30 de cadre pe secundă, iar pendulul v-a arătat ce prezice ecuaţia.

Asta e ideea. Matematica măsoară. PinePaper îl face vizibil.

{widget:pendulum-lab}

Referințe

  • Butcher, J.C. (2016). Metode numerice pentru Ecuații Diferiționale Ordinare (3rd ed.). Wiley.
  • Dormand, J.R. & Prince, P.J. (1980). O familie de formule Runge-Kutta încorporate. Journal of Computational and Applied Mathematics, 6(1), 19-26.
  • Euler, L. (1768). Institutium calculi integralis, Vol. 1. Impensis Academia Imperialis Scientiarum.
  • Par, E., Nørsett, S.P., & Wanner, G. (1993). Solving Ordy Differential Ecuations I: Nonstiff Problems (2nd ed.). Springer.
  • Kutta, W. (1901). Beitrag zur näherungsweisen Integration totaler Differialgleichungen. Zeitschrift für Mathematik und Physik, 46, 435-453.
  • Newton, I. (1687). Philosophiæ Naturalis Principia Mathematica. London: Joseph Streater.
  • Runge, C. (1895). Über die numerische Auflösung von Differentialgleichungen. Mathematische Annalen, 46(2), 167-178.
  • S.H. (2015). Nonlinear Dynamics and Haos (2nd ed.). Westview Press.

  • Rezolvatorul ODE al PinePaper acoperă Euler, RK4 și Adaptative Dormand-Prince RK45 în aproximativ 200 de linii. Încearcă simularea pendulului gratuit la paper.studio/editor.*

Ready to create?

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

Open PinePaper Editor