什麼是二階 Runge-Kutta 法計算機?
本工具可在區間 [x0, xn] 上,從初始條件 \(y_0 = f(x_0)\) 出發,數值求解形如 \(y' = F(x, y)\) 的一階常微分方程式(ODE)。它採用二階 Runge-Kutta 法(即中點法),輸出一份 \((x, y)\) 近似值表格,並算出終點解 \(y_n = f(x_n)\)。這是一項通用的數學工具,不受任何國家或法規限制,全球皆可使用。
使用方式
請將方程式右側的 \(F(x,y)\) 以含 \(x\) 與 \(y\) 的數學式輸入(例如 1-y^2、x*y 或 sin(x)+y)。接著填入初始點 \(x_0\) 與 \(y_0\)、區間終點 \(x_n\),並選擇等分的份數 \(n\)。系統會將區間切成 \(n\) 等份,每一步的步長為 \(h = (x_n - x_0)/n\)。\(n\) 越大,步長越細,精確度也越高。至於「顯示精度」選項,僅用來控制畫面顯示的有效位數,並不影響實際計算。
公式解析
中點型 Runge-Kutta 法每次推進一步求解:
$$k_1 = h \cdot F(x_i, y_i)$$$$k_2 = h \cdot F\left(x_i + \tfrac{h}{2},\; y_i + \tfrac{k_1}{2}\right)$$$$y_{i+1} = y_i + k_2, \qquad x_{i+1} = x_i + h$$此法在每一步的中點估計斜率,藉此抵消主要誤差項。其局部截斷誤差為 \(O(h^3)\),整體誤差為 \(O(h^2)\),因此將 \(h\) 減半,誤差大約可降為原本的四分之一。
實例演算
求解 \(y' = 1 - y^2\),其中 \(x_0 = 0\)、\(y_0 = 0\)、\(x_n = 1\)、\(n = 50\)(故 \(h = 0.02\))。其精確解為 \(y = \tanh(x)\)。第 1 步:\(k_1 = 0.02 \cdot (1-0) = 0.02\);\(k_2 = 0.02 \cdot (1-0.01^2) = 0.019998\);\(y_1 = 0.019998\)。如此完成全部 50 步後,可得 \(y(1) \approx 0.76159\),與 \(\tanh(1) \approx 0.7615942\) 在小數點後五位上完全吻合。
常見問題
計算結果有多準確? \(n\) 越大,準確度越高,因為整體誤差與 \(h^2\) 成正比。但對於剛性(stiff)方程式或步長過大時,結果可能發散。
\(x_n\) 可以小於 \(x_0\) 嗎? 可以。此時 \(h\) 為負值,方法會沿 \(x\) 軸反向積分,結果同樣有效。
可以使用哪些函式? 支援常見函式:sin、cos、tan、exp、ln、log、sqrt,以及 +、-、*、/、^ 等運算子與括號,還有常數 \(e\) 與 \(\pi\)。