透過 MCP 連接 →

輸入計算

數學公式

廣告

結果

Approximate y at the final x = 1
0.135296935
y' (= p) at that point: -0.1351841876
方法 二階 Runge-Kutta(中點法),局部誤差 O(h^3)
步長 h 0.02
步數 n 50
x y y' = p
0.0000000000000000 0.0000000000000000 1.0000000000000000
0.020000000000000000 0.019200000000000000 0.92240000000000000
0.040000000000000000 0.036894720000000000 0.84934720000000000
0.060000000000000000 0.053172670463999996 0.78060434278399990
0.080000000000000000 0.068117735709081600 0.71594578469232630
0.10000000000000000 0.081809400586607000 0.65515694969774430
0.12000000000000001 0.094322966500334410 0.59803380843614800
0.14000000000000000 0.10572975724910819 0.54438238107427720
0.16000000000000000 0.11609731515993502 0.49401826294618173
0.18000000000000000 0.12548958795637377 0.44676617193727500
0.19999999999999998 0.13396710678720436 0.40245951663989300
0.21999999999999997 0.14158715582126055 0.36093998434738000
0.23999999999999996 0.14840393379607325 0.32205714799495050
0.25999999999999995 0.15446870789053943 0.28566809119500390
0.27999999999999997 0.15982996027517107 0.25163705055227820
0.30000000000000000 0.16453352767755470 0.21983507448028827
0.32000000000000000 0.16862273428543417 0.19013969777498171
0.34000000000000000 0.17213851829528548 0.16243463123452180
0.36000000000000004 0.17511955240035207 0.13660946564564497
0.38000000000000006 0.17760235849882816 0.11255938948719588
0.40000000000000010 0.17962141689018327 0.090184919730279480
0.42000000000000010 0.18120927021549250 0.069391645142043710
0.44000000000000010 0.18239662238604734 0.050089981526471296
0.46000000000000013 0.18321243273344676 0.032194938360768685
0.48000000000000015 0.18368400560378675 0.015625896310044324
0.50000000000000010 0.18383707560845658 0.00030639512601406127
0.52000000000000010 0.18369588873438927 -0.013836068542494098
0.54000000000000010 0.18328327950738588 -0.026870233878397654
0.56000000000000020 0.18262074439331474 -0.038861259595601230
0.58000000000000020 0.18172851161356454 -0.049870899020389145
0.60000000000000020 0.18062560754308220 -0.059957666948328710
0.62000000000000020 0.17932991985163985 -0.069176998652447110
0.64000000000000020 0.17785825754163154 -0.077581401401623160
0.66000000000000030 0.17622640802868705 -0.085220598832054500
0.68000000000000030 0.17444919140468865 -0.092141668499290240
0.70000000000000030 0.17254051201637852 -0.098389172923625410
0.72000000000000030 0.17051340748663180 -0.10400528442760995
0.74000000000000030 0.16838009529963238 -0.10902990405100074
0.76000000000000030 0.16615201706561347 -0.11350077481565485
0.78000000000000040 0.16383988057550042 -0.11745358960059915
0.80000000000000040 0.16145369975070850 -0.12092209387579109
0.82000000000000040 0.15900283258849274 -0.12393818353188411
0.84000000000000040 0.15649601719860975 -0.12653199803260615
0.86000000000000040 0.15394140602262482 -0.12873200910612914
0.88000000000000040 0.15134659832296904 -0.13056510518203110
0.90000000000000050 0.14871867102481567 -0.13205667177110950
0.92000000000000050 0.14606420798999050 -0.13323066797637725
0.94000000000000050 0.14338932779845207 -0.13410969931504166
0.96000000000000050 0.14069971010936450 -0.13471508702311555
0.98000000000000050 0.13800062067043317 -0.13506693400652098
1.0000000000000004 0.13529693504097162 -0.13518418759510423

這個計算機能做什麼

本工具會在區間 [x0, xn] 上,以二階 Runge-Kutta 法(即中點法/改良型尤拉法的 RK2 格式)數值求解一個形如 \(y'' = F(x, y, y')\) 的二階常微分方程。你只需把方程右側的 F 寫成以 x、y 與 p(其中 p 代表 y')為變數的算式,再給定初始值 y(x0)、y'(x0)、區間端點與步數即可。計算結果會列出整個區間上一連串 (x, y, y') 的數值表。由於這純屬數值分析,計算方法在世界各地完全相同,沒有地區差異。

使用方法

請以 x、y、p 寫出強迫函數 F,例如要計算 \(y'' = -4y' - 4y\),就輸入 -4*p-4*y。支援的運算子有 + - * / ^(或 **),函數則包含 sin、cos、tan、exp、log、ln、sqrt、abs、pow,並可使用常數 pi、e。接著設定 x0、初始的 y0 與 y'0 = p0、終點 xn,並選擇子區間數 n。步數越多,步長 \(h = (x_n - x_0)/n\) 越小,誤差也越低(全域誤差為 \(O(h^2)\))。

公式解析

首先令 \(p = y'\),把方程降為一階系統,得到 \(y' = p\) 與 \(p' = F(x, y, p)\)。每一個 RK2 步驟都會分別在起點與中點取樣斜率,再加以結合:先算 \(j_1 = h \cdot F(x,y,p)\)、\(k_1 = h \cdot p\),接著在中點計算 \(j_2\) 與 \(k_2\),並用來推進 p 與 y。每一步的局部截斷誤差為 \(O(h^3)\)。

$$\begin{cases} y' = p \\ p' = F(x,y,p) \end{cases} \qquad h = \dfrac{x_n - x_0}{n}$$ $$\begin{aligned} y_{i+1} &= y_i + h\,p\!\left(x_i + \tfrac{h}{2}\right) \\ p_{i+1} &= p_i + h\,F\!\left(x_i + \tfrac{h}{2},\; y_i + \tfrac{h}{2}p_i,\; p_i + \tfrac{h}{2}F_i\right) \end{aligned}$$
Advertisement
將二階 ODE 化簡為兩個耦合一階方程的示意圖
利用 \(y' = p\),將二階常微分方程改寫為兩個耦合的一階方程。
展示 RK2 中點法在一步的中點處估算斜率的示意圖
中點 RK2 方法先估算初始斜率,再利用區間中點處的斜率推進解。

範例演算

取 F = -4*p-4*y、x0 = 0、y0 = 0、p0 = 1、xn = 1、n = 50,則步長為 \(h = 0.02\)。第一步得到 \(y_1 = 0.0192\)、\(p_1 = 0.9224\)。一路迭代到 \(x = 1\) 時,可得 \(y(1) \approx 0.13533\)、\(y'(1) \approx -0.13533\),與精確解 \(y = x \cdot e^{-2x}\) 在 \(x = 1\) 處的值 \(e^{-2} = 0.135335\) 相當吻合。

常見問答

這是 RK2 還是 RK4?本工具採用的是二階 Runge-Kutta(中點法),並非經典的四階方法,因此全域精度只到二階。

xn 可以小於 x0 嗎?可以。此時步長會變成負值,積分將往回(反向)進行,這在數學上是完全成立的。

為什麼出現了錯誤的列?當 F 內部發生計算問題時——例如除以零、對非正數取對數,或對負數開平方根——積分就會中止,並標示出發生的位置。

最後更新: