這個計算器能做什麼
本工具採用經典的四階 Runge-Kutta(RK4)法,在區間 [x0, xn] 上數值求解形如 \(y'' = F(x,\,y,\,y')\) 的二階常微分方程。你只需輸入右端項 F(以 x、y 與 p 表示的數學式,其中 p 代表 y')、初始條件 \(y(x_0)\) 與 \(y'(x_0)\)、區間端點,以及步數即可。計算器會回傳完整的 x、y 與 y' 數值表,並給出端點處的數值。這純屬數值分析方法,適用於各種情境,不受任何國家或地區限制。
使用方式
輸入 F(x, y, p)——例如針對 \(y'' + 4y' + 4y = 0\),可填入 -4*p - 4*y。設定 x0、y0 = f(x0),以及 p0 = y'(x0)。再設定終點 xn,並選擇子區間數 n(步數越多,步長 \(h = (\text{xn} - \text{x0})/\text{n}\) 越小,精度越高)。接著選擇要顯示的有效位數。RK4 的整體誤差為 \(O(h^4)\),因此將 n 加倍,誤差大約可降為原本的十六分之一。
公式說明
透過令 \(p = y'\),可將一個二階常微分方程化為兩個一階方程組成的方程組:此時 \(y' = p\),且 \(p' = F(x,\,y,\,p)\)。RK4 在每一步都會對兩個未知量各進行四次加權斜率評估(y 用 k,p 用 j),再依 \((k_1 + 2k_2 + 2k_3 + k_4)/6\) 與 \((j_1 + 2j_2 + 2j_3 + j_4)/6\) 的方式組合推進。
$$\begin{gathered} y^{\prime\prime} = F(x,\,y,\,p), \qquad p = y^{\prime} \\[1.2em] h = \frac{\text{xn} - \text{x0}}{\text{n}} \end{gathered}$$ $$\begin{gathered} \begin{aligned} k_1 &= h\,p_i & l_1 &= h\,F(x_i,\,y_i,\,p_i) \\ k_2 &= h\left(p_i+\tfrac{l_1}{2}\right) & l_2 &= h\,F\!\left(x_i+\tfrac{h}{2},\,y_i+\tfrac{k_1}{2},\,p_i+\tfrac{l_1}{2}\right) \\ k_3 &= h\left(p_i+\tfrac{l_2}{2}\right) & l_3 &= h\,F\!\left(x_i+\tfrac{h}{2},\,y_i+\tfrac{k_2}{2},\,p_i+\tfrac{l_2}{2}\right) \\ k_4 &= h\left(p_i+l_3\right) & l_4 &= h\,F\!\left(x_i+h,\,y_i+k_3,\,p_i+l_3\right) \end{aligned} \\[1em] y_{i+1} = y_i + \tfrac{1}{6}\left(k_1+2k_2+2k_3+k_4\right), \quad p_{i+1} = p_i + \tfrac{1}{6}\left(l_1+2l_2+2l_3+l_4\right) \\[1.4em] \text{where}\quad \left\{ \begin{aligned} F &= F(x,\,y,\,p) \\ h &= \dfrac{\text{xn} - \text{x0}}{\text{n}} \\ x_0 &= \text{x0},\; y_0 = \text{y0},\; p_0 = \text{p0} \end{aligned} \right. \end{gathered}$$
實際範例
以 \(y'' = -4p - 4y\) 為例,取 x0 = 0、y0 = 0、p0 = 1、xn = 1,並僅用一個粗略的大步長(n = 1,h = 1)。四個階段分別得到 \(k_1=1\)、\(k_2=-1\)、\(k_3=2\)、\(k_4=-5\) 與 \(j_1=-4\)、\(j_2=2\)、\(j_3=-6\)、\(j_4=12\)。於是 $$y(1) = \frac{1 - 2 + 4 - 5}{6} = -\frac{1}{3} = -0.3333,$$ $$p(1) = 1 + \frac{-4 + 4 - 12 + 12}{6} = 1.$$ 精確解為 \(y = x e^{-2x}\),所以 \(y(1) = e^{-2} = 0.1353\);單一步長 h = 1 顯然太過粗略。若改用 n = 50 或 100,結果便會收斂至精確值。
常見問題
可以反向積分嗎?可以——只要將 xn 設得比 x0 小,步長 h 就會變成負值,從 x0 往下積分到 xn。
為什麼步數少的時候答案看起來不對?RK4 的精度取決於步長是否夠小。請逐步增加 n,直到相鄰兩次的結果不再變化為止。
F 裡可以使用哪些函數?支援 + - * / ^、括號,以及 sin、cos、tan、asin、acos、atan、sinh、cosh、tanh、exp、log/ln、log10、sqrt、abs,另外還有常數 pi 與 e。