· 5 min read

How a Pendulum Teaches You differential Equations

Anda tidak perlu gelar matematika untuk memahami pemecah ODE. Kau butuh pendulum, layar, dan 20 menit. Inilah cara Euler, RK4, dan metode adaptasi sebenarnya bekerja - dengan kode sebenarnya.

Start With What You Can See

Menggantung berat dari string. Tarik ke satu sisi. Lepaskan. Ini ayunan.

Anda baru saja menciptakan sistem yang diatur oleh persamaan diferensial:

daphne / dt = asing dsb / dt = - (g / L)

ini adalah sudutnya. Ini adalah kecepatan sudut. g adalah gravitasi (9.81 m / s ²). L adalah panjang string. Kedua garis ini mengatakan: perubahan sudut pada kecepatan sama, dan kecepatan berubah pada kecepatan yang tergantung pada gravitasi, panjang, dan sudut saat ini.

Masalahnya: kita tidak dapat memecahkan persamaan ini persis. sin(θ) membuatnya nonlinear. Tidak ada formula yang memberi Anda cemas setiap saat t. Jadi kami kira-kira - kami melangkah maju dalam bertahap kecil, menghitung negara berikutnya dari yang sekarang.

Itulah yang dilakukan pemecah ODE. Dan ada cara yang lebih baik dan lebih buruk untuk melakukannya.

Metode Euler: jelas tapi tidak jelas

Ide paling sederhana: jika saya tahu negara sekarang, dan saya tahu tingkat perubahan, saya dapat memperkirakan negara langkah kecil kemudian.

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

Ini adalah metode Euler. Ini seperti berjalan melalui kabut: Anda dapat melihat satu langkah ke depan, sehingga Anda mengambil langkah itu, kemudian melihat lagi. Dalam kode:

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

Masalahnya, metode Euler adalah akurat. Itu berarti jika Anda setengah ukuran langkah, Anda setengah kesalahan. Untuk pendulum, kesalahan ini mengumpulkan - pendulum simulasi perlahan mendapatkan energi dan ayunan yang lebih luas dan lebih luas. Setelah beberapa menit, itu berputar dalam lingkaran penuh. Sebuah pendulum nyata tidak pernah melakukan hal ini.

The Workhorse

Pada tahun 1901, Carl Runge dan Martin Kutta menerbitkan metode yang lebih baik. Alih-alih melihat tingkat perubahan sekali per langkah, melihatnya empat kali:

  1. Mengukur lereng di awal langkah Oraby
  2. Step halfway using k 1f, measure the slope there Crisk
  3. Langkahsetengahmenggunakk, mengukur lagi
  4. Step to the end using k 1o time
  5. Kombinasi: rata-rata berbobot (k _ + 2k + 2k = 2k + k = 6

Ini empat urutan akurat. Setengah ukuran langkah dan kesalahan turun dengan faktor 16. Pendulum menyimpan energi dengan benar untuk ribuan ayunan.

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

Ini adalah metode yang digunakan PinePaper untuk pendulum, musim semi, dan simulasi Van der Pol. Ini adalah metode yang sama digunakan dalam perhitungan lintasan pesawat. 22 baris kode.

Mengapa hal ini luar Fisika

Pendulum adalah contoh pengajaran. Tapi teknik yang sama - melangkah maju, mengukur, benar - berlaku di mana saja Anda memiliki tingkat perubahan:

      • Pertumbuhan penduduk * *: dx / dt = r Pertumbuhan logistik dengan kapasitas membawa. Solder yang sama.
        • Reaksi Kimia * *: konsentrasi berubah pada tingkat proporsional dengan konsentrasi saat ini. Solder yang sama.
      • Network Neural * *: turunan gradien adalah ODE yang diskortisasi. Setiap langkah pelatihan adalah langkah Euler sepanjang permukaan kehilangan.
      • Ekonomi * *: senyawa bunga terus-menerus melalui dy / dt = r Pertumbuhan eksponensial adalah ODE paling sederhana.
      • Animation timing * *: easing curves are solutions to spring-damper ODEs. The "elastic" dan "bouncing" easings di CSS adalah simulasi fisik.

Matematika tidak berubah. Domain yang melakukannya. Itulah yang membuatnya bahasa - yang sama tata bahasa menggambarkan domba menghitung, pendulum ayunan, dan pelatihan jaringan saraf.

Cobalah Sendiri

Buka PinePaper dan pilih generator System Dynamic. Pilih "pendulum". Ayunan bob. Sekarang ubah parameter:

  • Tingkatkan gravitasi, lebih cepat ayunan (jangka pendek)
  • Tingkatkan panjang batang dengan pelan swing (jangka panjang)
  • Mulai dari sudut yang lebih besar, perhatikan bagaimana periode meningkat (efek nonlinear bahwa perkiraan sudut buku teks berkurang)

Setiap perubahan yang Anda buat adalah pengukuran. Anda mengubah parameter dan mengamati hasilnya. Solver RK4 menghitung ulang 30 frame per detik, dan pendulum menunjukkan apa prediksi persamaan.

Itulah intinya. Matematika adalah pengukuran. PinePaper membuatnya terlihat.

Interactive demo — open in editor pp:PinePaper
}

Referensi

  • Butcher, J.C. (2016). * Metode Numerik untuk Perbandingan Perbedaan Biasa * (3 ed.). Wiley.
  • Dormand, JR & Prince, P.J. (1980). Sebuah keluarga Runge- Kutta formula tertanam. * Jurnal Matematika Komputer dan Terapan *, 6 (1), 19- 26.
  • Euler, L. (1768). Institutionum kalkuli integralis, Vol 1 akademisi Imperialis Scientiarum.
  • Hair, E., Nørsett, S.P., & Wanner, G. (1993). * Memecahkan Persamaan Perbedaan Biasa I: Masalah Nonstiff * (2nd ed.). Springer.
  • Kutta, W. (1901). Beitratzur nähersweisen Integrasi totaler differentialgleichungen. * Zeitscraft für Mathtik und Physik *, 46, 45- 453.
  • Newton, I. (1687). * Philosophitalis Principia Mathematica *. Joseph Streater.
  • Runge, C. (1895). Diriber die numerische Auflösung von differentialgleichungen. ♪ Mathematische Annalen ♪, 46 (2), 167-178.
  • Strogatz, S.H. (2015). * Dynamics Nonlinear dan Chaos * (ed 2.). Westview Press.

  • Solder ODE PinePaper meliputi Euler, RK4, dan Dormand- Pangeran RK45 di sekitar 200 baris. Coba simulasi pendulum gratis di [pinepaper.studio / editor] (/editor) *

Ready to create?

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

Open PinePaper Editor