用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))更精確
沒有留言:
張貼留言