· 5 min read

Bagaimana Seorang Pendulum Mengajarkan Anda Penderitaan yang Berbeda

Anda tidak perlu gelar matematika untuk memahami pemecah ODE. Kau butuh pendulum, layar, dan 20 menit. Inilah bagaimana Euler, RK4, dan metode penyesuaian sebenarnya bekerja — dengan kode yang sebenarnya.

Mulailah dengan Apa yang Dapat Anda Lihat

Angkut berat dari tali. Tarik ke satu sisi. Lepaskan. Ini ayunan.

Kau baru saja menciptakan sistem yang diatur oleh persamaan diferensial:

ω d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d ωωωωωω
· sin(th)

itu adalah sudutnya. α adalah kecepatan sudut. g graviti (9,81 m/s2). L adalah panjang string. Kedua garis ini mengatakan: sudut berubah pada laju sama dengan halaju, dan halaju berubah pada tingkat yang bergantung pada gravitasi, panjang, dan sudut saat ini.

Kita tidak bisa menyelesaikan persamaan ini dengan tepat. sin(θ) membuatnya nonlinear. Tidak ada rumus yang memberikan Anda tha setiap saat t. Jadi, kita mempertimbangkan — kita melangkah maju dalam jumlah kecil, menghitung keadaan berikutnya dari yang sekarang.

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

Metode Euler: Jelas tetapi Terhukum

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

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

Masalah: metode Euler adalah pertama-urutan akurat. Itu berarti jika Anda membagi ukuran langkah, Anda dapat mengurangi kesalahan. Untuk sebuah pendulum, kesalahan ini terkumpul — pendulum yang disimulasikan perlahan - lahan memperoleh energi dan ayunan yang lebih lebar dan lebar. Setelah beberapa menit, berputar dalam lingkaran penuh. Sebuah pendulum nyata tidak pernah melakukan hal ini.

RK4: Kuda Kerja

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

  1. Ukur lereng pada awal langkah → k1
  2. Langkah setengah jalan menggunakan k1, mengukur lereng di sana → k2
  3. Langkah setengah jalan menggunakan k2, ukuran lagi → k3
  4. Langkah ke ujung menggunakan k3, ukuran sekali lagi → k4
  5. Kombinasi: rata - rata berbobot (k1 + 2k2 + 2k3 + k4) / 6

Ini adalah urutan keempat akurat. Halve ukuran langkah dan kesalahan menurun oleh faktor 16. Si bandul itu menghemat 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-massa, dan simulasi Van der Pol. Metode yang sama digunakan dalam perhitungan lintasan kedirgantaraan. Kode 22 baris.

Mengapa Hal Ini Penting di Luar Fisik

Wagon adalah contoh pengajaran. Namun, teknik yang sama — maju ke depan, mengukur, benar — berlaku di mana pun Anda memiliki tingkat perubahan:

  • ***** Pertumbuhan penduduk **: dx/dt = r·x·(1 - x/K). Pertumbuhan logistik dengan daya angkut. Penyelamat yang sama.
  • *** Reaksi chemisical**: konsentrasi berubah pada kadar proporsional dengan konsentrasi arus. Penyelamat yang sama.
  • *Neural jaringan: turunan gradien adalah ODE yang didiskretisasi. Setiap langkah latihan adalah langkah Euler sepanjang permukaan kehilangan.
  • Ekonomi: senyawa bunga terus menerus melalui dy/dt = r·y. Pertumbuhan eksponen adalah ODE yang paling sederhana.
  • *Animasi waktu: easing kurva adalah solusi untuk musim semi-damper ODEs. Teelastik" dan "bounce" easing di CSS adalah simulasi fisik.

Matematika tidak berubah. Domain tidak. Itulah yang membuatnya menjadi bahasa — tata bahasa yang sama menggambarkan penghitungan domba, ayunan bandul, dan pelatihan jaringan saraf.

Cubalah Sendiri

Diagoin Open PinePaper dan pilih generator Sistem Dinamika. "Pilihan" Ayunan Bob. Sekarang perubahan parameter:

  • Pulihkan gravitasi → ayunan cepat (perioda pendek)
  • Tingkatkan panjang batang → ayunan lebih lambat (perioda lebih panjang)
  • Mulai dari sudut yang lebih besar → perhatikan bagaimana periode meningkat (efek nonlinear yang dilewatkan oleh buku teks dari segi kecil)

Setiap perubahan yang kau buat adalah pengukuran. Kau mengubah parameter dan mengamati hasilnya. Pemecah RK4 menyusun ulang 30 frame per detik, dan pendulum menunjukkan apa prediksi persamaan.

Itulah intinya. Matematika adalah pengukuran. PinePaper membuatnya terlihat.

[{widget:kebergantungan-lab}}}

Rujukan

  • ^ Butcher, J.C. (2016). Numerical Methods for Ordinary Differential Equations (3rd ed.). Wiley.
  • ^ Dormand, J.R. & Prince, P.J. (1980). Keluarga formula Rudge-Kutta. *Journal Matematika Komputasi dan Terapan *, 6(1), 19-26.
  • Euler, L. (1768). Instituutum calculi integralis, Vol. 1. Impensis Academiae Imperialis Scientiarum.
  • Kemuning, E., Nørsett, S.P., & Wanner, G. (1993). Solving Ordinary Differential Equations I: Nonstiff Problems (nd ed.). Springer.
  • (Inggris) Kutta, W. (1901). Beigage zur näherungsweisen Integrasi totaler Differentialgleichuungen. Zeitschrift für Mathematik und Physik*, 46, 435-453.
    1. Newton, I. (1687). "Philosophiæ Naturalis Principia Mathematica". Joseph Streater.
  • 2008 Runge, C. (1895). Über die numerische Auflösung von Diferensialgleichuungen. Mathematische Annalen, 46(2), 167-178.
  • ^ Strogatz, S.H. (2015). [Nonlinear Dynamics and Chaos* (nd ed.). Wajar Westview Press (dalam bahasa Inggris).

Pemecah ODE PinePaper ini meliputi Euler, RK4, dan adaptif Dormand-Prince RK45 dalam sekitar 200 baris. Coba simulasi pendulum bebas di pinepaper.studio/editor.*

Ready to create?

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

Open PinePaper Editor