Jak Pendulum uczy Cię równań różniczkowych
Nie potrzebujesz magistra matematyki, żeby zrozumieć rozwiązania ODE. Potrzebujesz wahadła, ekranu i 20 minut. Oto jak Euler, RK4 i metody adaptacyjne działają - z prawdziwym kodem.
Zacznij od tego, co widzisz
Powiesić ciężar na sznurku. Pociągnij na bok. Puść. Waha się.
Właśnie stworzyłeś system regulowany przez równanie różniczkowe:
dθ / dt = ω dω / dt = - (g / L) · sin (θ)
to jest kąt. ω to prędkość kątowa. g jest grawitacją (9,81 m / s ²). L jest długością łańcucha. Te dwie linie mówią: kąt zmienia się w tempie równym prędkości, a prędkość zmienia się w tempie zależnym od grawitacji, długości i aktualnego kąta.
Problem: nie możemy dokładnie rozwiązać tego równania. sin(θ) sprawia, że jest nieliniowy. Nie ma żadnej formuły, która dawałaby ci "jo" w dowolnym momencie t. Więc przybliżamy - krok naprzód w małych krokach, obliczamy następny stan z obecnego.
Tak działa rozwiązanie ODE. Są lepsze i gorsze sposoby.
Metoda Euler: Oczywista, ale wadliwa
Najprostszy pomysł: jeśli znam stan teraz i znam tempo zmian, mogę oszacować stan mały krok później.
next_angle = current_angle + velocity × dt
next_velocity = current_velocity + acceleration × dt
To metoda Eulera. To jak chodzenie przez mgłę: widać jeden krok do przodu, więc robisz ten krok, a potem patrzysz ponownie. Kod:
function euler(f, t, y, dt) {
const dy = f(t, y);
return [
y[0] + dt * dy[0],
y[1] + dt * dy[1]
];
}
Problem: Metoda Eulera jest poprawna. Oznacza to, że jeśli zwiększysz o połowę rozmiar kroku, to o połowę popełnisz błąd. Dla wahadła ten błąd gromadzi się - symulowane wahadło powoli zyskuje energię i kołysze się szerzej i szerzej. Po kilku minutach kręci się w kółko. Prawdziwe wahadło nigdy tego nie robi.
RK4: Koń roboczy
W 1901 roku Carl Runge i Martin Kutta opublikowali lepszą metodę. Zamiast patrzeć na tempo zmian raz na krok, spójrz na to cztery razy:
- Zmierz nachylenie na początku kroku → k
- Krok w połowie za pomocą k
- Krok w połowie za pomocą k mbH, mierzyć ponownie → k
- Krok do końca za pomocą k
- Kombinacja: średnia ważona (k = + 2k = = + 2k = =) / 6
Czterokolejno-dokładne. Połowę rozmiaru kroku i błąd spada o współczynnik 16. Wahadło prawidłowo oszczędza energię na tysiące huśtawek.
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])
];
}
Jest to metoda PinePaper stosowana do symulacji wahadła, masy Spring- i Van der Pol. To ta sama metoda stosowana w obliczeniach trajektorii lotniczej. 22 linie kodu.
Dlaczego to ma znaczenie poza fizyką
Wahadło jest przykładem nauczania. Ale ta sama technika - krok do przodu, pomiar, poprawny - stosuje się wszędzie, gdzie masz tempo zmian:
- Wzrost populacji * *: dx / dt = r · x · (1 - x / K). Wzrost logistyczny z nośnością. To samo rozwiązanie.
- Reakcje chemiczne * *: stężenia zmieniają się w tempie proporcjonalnym do obecnych stężeń. To samo rozwiązanie.
- Sieci neurologiczne * *: gradient schodzenia jest dyskrecjonalnym ODE. Każdy krok treningowy jest krokiem Euler wzdłuż powierzchni straty.
- Ekonomia * *: związki procentowe nieprzerwanie poprzez dy / dt = r · y. Dodatkowy wzrost jest najprostszym ODE.
- Czas animacji * *: krzywe rozluźnienia są rozwiązaniami dla ODE spring- tłumiących. "Elastyczne" i "odbijanie" w CSS to fizyczne symulacje.
Matematyka się nie zmienia. Domena tak. To sprawia, że jest to język - ta sama gramatyka opisuje liczenie owiec, huśtawki wahadła i trening sieci neuronowej.
Sam spróbuj
Otwórz PinePaper i wybierz generator Dynamic System. Wybierz "wahadło". Bob huśta. Teraz zmień parametry:
- Zwiększenie grawitacji → szybszy huśtawka (krótszy okres)
- Zwiększenie długości pręta → wolniejszy huśtawka (dłuższy okres)
- Zacznij od większego kąta → patrz, jak okres wzrasta (efekt nieliniowy, że podręcznikowy mały kąt przybliżania brakuje)
Każda zmiana jest miarą. Zmieniłeś parametr i obserwowałeś wynik. Rozpuszczalnik RK4 przerobił 30 klatek na sekundę, a wahadło pokazało wam, co to równanie przewiduje.
O to właśnie chodzi. Matematyka to pomiar. PinePaper sprawia, że jest widoczny.
{{widget: wahadłowiec}}
Odniesienia
- Butcher, J.C. (2016). * Metody numeryczne dla równań różniczkowych zwyczajnych * (3rd ed.). Wiley.
- Dormand, J.R. & Prince, P.J. (1980). Rodzina wbudowanych preparatów Runge- Kutta. * Journal of Computational and Applied Mathematics *, 6 (1), 19- 26.
- Euler, L. (1768). * Institutionum calculi integralis *, Vol. 1. Impensis Academiae Imperialis Scientifiarum.
- Hairer, E., Nørsett, S.P., & Wanner, G. (1993). * Solving Ordinary Differential Equations I: Nonstill 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). * Filozofia Naturalis Alternaria Mathematica *. London: Joseph Streater.
- Runge, C. (1895). Über die numerische Auflösung von Differentialgleichungen. * Mathematische Annalen *, 46 (2), 167- 178.
- Srogatz, S.H. (2015). * Nonlinear Dynamics and Chaos * (2nd ed.). Westview Press.
- Rozwiązanie ODE PinePaper obejmuje Euler, RK4 i adaptive Dormand- Prince RK45 w około 200 liniach. Spróbuj symulacji wahadła za darmo w [pinepaper.studio / editor] (/editor). *
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor