2025年3月29日 星期六

Runge-Kutta物理教學

用Runge-Kutta方法解自由落體問題

1. 物理問題描述

考慮空氣阻力的自由落體運動:

微分方程組:
dv/dt = g - (c/m)v
dy/dt = v

其中 g = 9.8 m/s², c = 0.5 (阻力係數), m = 1kg

2. 參數控制

3. 運動視覺化

4. Runge-Kutta演算法實作

function rk4(f, y, t, dt) { let k1 = f(y, t); let k2 = f(add(y, mul(k1, dt/2)), t + dt/2); let k3 = f(add(y, mul(k2, dt/2)), t + dt/2); let k4 = f(add(y, mul(k3, dt)), t + dt); return add(y, mul(add(k1, mul(k2,2), mul(k3,2), k4), dt/6)); }

四階Runge-Kutta的誤差為O(Δt⁵),比歐拉法(O(Δt))更精確

沒有留言:

張貼留言