這個計算器能做什麼
本工具採用經典的前向(顯式)尤拉法,對形如 \(y' = F(x, y)\)、初始條件為 \(y(x_0) = y_0\) 的一階常微分方程進行數值求解。它會從 \(x_0\) 出發、以 \(n\) 個等距步長前進到 \(x_n\),並回傳步長 \(h\)、完整的 \((x, y)\) 近似值數值表,以及終點的近似解 \(y(x_n)\)。
使用方式
請以 \(x\) 與 \(y\) 為變數,將右端項 \(F(x, y)\) 輸入為數學運算式(支援 + - * / ^ 運算子、括號,以及 sin、cos、exp、log/ln、sqrt、abs 等函數,還有常數 pi 與 e)。接著設定起點 \(x_0\)、初始值 \(y_0\)、終點 \(x_n\),並選擇切分段數 \(n\)。\(n\) 越大代表步長越小,結果通常也越精確。
公式解析
步長為 $$h = \frac{x_n - x_0}{n}$$ 而格點為 \(x_k = x_0 + k \cdot h\)。從 \(y_0\) 開始,每個新值依下式計算:$$y_{k+1} = y_k + h \cdot F(x_k, y_k)$$——也就是在目前位置取斜率 \(F\),再以寬度 \(h\) 沿直線前進一步。此方法為一階精度,因此整體誤差約與 \(O(h)\) 成正比。
範例演算
以 \(y' = 1 - y^2\)、\(x_0 = 0\)、\(y_0 = 0\)、\(x_n = 1\)、\(n = 5\) 為例,步長 \(h = 0.2\)。逐步迭代可得 \(y_1 = 0.2\)、\(y_2 = 0.392\)、\(y_3 = 0.5612672\)、\(y_4 \approx 0.6982668\)、\(y_5 \approx 0.8007513\)。因此尤拉法在 \(x = 1\) 的估計值約為 \(0.8008\)。由於精確解為 \(\tanh(x)\),\(\tanh(1) \approx 0.7616\);只要加大 \(n\),尤拉法的結果就會逐漸逼近此真實值。
常見問題
為什麼我的答案和精確解不一樣?尤拉法只有一階精度,誤差大致與 \(h\) 成正比,因此選擇較大的 \(n\)(較小的步長)就能提升準確度。
\(x_n\) 可以小於 \(x_0\) 嗎?可以。此時步長 \(h\) 會變成負值,相同的遞迴式便會往回(反向)積分。
支援哪些函數?包含 sin、cos、tan、asin、acos、atan、sinh、cosh、tanh、exp、log/ln、log10、sqrt 與 abs,以及常數 pi 與 e。