這個計算機的功能
本工具可數值求解形如 \(y' = F(x, y)\) 的一階常微分方程,並在給定初始條件 \(y(x_0) = y_0\) 的情況下,從 \(x_0\) 積分到 \(x_n\)。它採用經典的四階 Runge-Kutta 法(RK4),這是數值分析中最常用、也最可靠的單步積分法之一。計算結果會輸出一張逼近真實解的 \((x_i, y_i)\) 數值表,並附上終點值 \(y(x_n)\)。這是一個純數學工具,不涉及任何國家或單位的限制。
使用方式
請將方程式右側 \(F(x,y)\) 以含有 x 與 y 的運算式輸入(例如 1-y^2、x+y、x*y 或 sin(x)+y)。支援的運算子有 + - * / ^,函式則包含 sin, cos, tan, exp, log, ln, sqrt, abs, tanh,並可使用常數 pi 與 e。接著設定起點 \(x_0\)、初始值 \(y_0\)、終點 \(x_n\),並選擇要將區間等分成幾段 \(n\)。等分數越多,精度越高,因為 RK4 的整體誤差會以 \(h^4\) 的速度縮小。
公式解析
整個區間會被切割成 \(n\) 個等寬的小段,每段寬度為 $$h = \frac{x_n - x_0}{n}.$$ 在每一步中,RK4 會對斜率取樣四次:起點取一次(\(k_1\))、中點取兩次(\(k_2\)、\(k_3\))、終點取一次(\(k_4\))。下一個值即為加權平均 $$y_{n+1} = y_n + \frac{h}{6}\left(k_1 + 2k_2 + 2k_3 + k_4\right).$$ 這樣的加權方式可消去至四階為止的誤差項,使單步截斷誤差為 \(O(h^5)\),整體誤差為 \(O(h^4)\)。
實例演算
求解 \(y' = 1 - y^2\),其中 \(x_0 = 0\)、\(y_0 = 0\)、\(x_n = 1\)、\(n = 10\)(\(h = 0.1\))。其精確解為 \(y = \tanh(x)\)。RK4 的第一步算得 \(y_1 = 0.0996679\),與 \(\tanh(0.1) = 0.0996680\) 相符。完成全部十步後,\(y(1) = 0.7615942\),與 \(\tanh(1) = 0.7615942\) 在小數點後七位上完全吻合。
常見問題
為什麼 RK4 比 Euler 法更好?Euler 法每步只取一次斜率(誤差為 \(O(h)\))。RK4 每步取四次斜率並加以平均,在相同步長下可達到 \(O(h^4)\) 的精度,因此要達到相同的目標精度所需的步數遠少於 Euler 法。
我該選擇多少步數?建議先從 50 開始。若解的變化平滑,這通常已綽綽有餘;遇到變化劇烈或接近剛性(stiff)的問題時,再增加到 100、200 或 500。
若出現 NaN 或無限大(Infinity)怎麼辦?這代表解可能已發散,或 \(F(x,y)\) 觸發了無效運算(例如對負數取對數或除以零)。請檢查運算式,並試著縮小區間或增加步數。