透過 MCP 連接 →

輸入計算

y'' = F(x, y, y') 的右端項。可使用 x、y、p 及 + - * / ^、sin、cos、exp、log、sqrt、pi、e。

數學公式

廣告

結果

xn 處的 y
0.135335274181834636
端點處的 y 值
xn 處的 y'
-0.135335259156935755
端點處的 y'(= p)值

Method: classic 4th-order Runge-Kutta (RK4) · steps n = 50 · step size h = 0.02

i x y = f(x) y' = p
0 0 0 1
1 0.0200000000000000004 0.0192157866666666649 0.922357866666666637
2 0.0400000000000000008 0.0369246498212522645 0.849267048373009037
3 0.0599999999999999978 0.0532152204359356007 0.780489998192799184
4 0.0800000000000000017 0.0681714957894921647 0.715800800394514436
5 0.100000000000000006 0.0818730665794356605 0.654984623530822985
6 0.119999999999999996 0.0943953333479264356 0.597837198534814762
7 0.140000000000000013 0.105809712710295489 0.544164320702777649
8 0.160000000000000003 0.116183833853126500 0.493781374492720526
9 0.179999999999999993 0.125581725747898248 0.446512880115091604
10 0.200000000000000011 0.134063995506174150 0.402192060937331175
11 0.220000000000000001 0.141687998283193534 0.360660430767116402
12 0.239999999999999991 0.148507999118433237 0.321767400120490987
13 0.260000000000000009 0.154575327084229969 0.285369900620602468
14 0.280000000000000027 0.159938522096849084 0.251332026710574419
15 0.299999999999999989 0.164643474728420641 0.219524693900195078
16 0.320000000000000007 0.168733559342904987 0.189825312800676715
17 0.340000000000000024 0.172249760864668727 0.162117478234802465
18 0.359999999999999987 0.175230795474316581 0.136290672741392865
19 0.380000000000000004 0.177713225513107781 0.112239983823256881
20 0.400000000000000022 0.179731568864560570 0.0898658343166999773
21 0.419999999999999984 0.181318403069687717 0.0690737252883046882
22 0.440000000000000002 0.182504464420687129 0.0497739908911289108
23 0.460000000000000020 0.183318742266808804 0.0318815646377390433
24 0.479999999999999982 0.183788568755511195 0.0153157565716578320
25 0.5 0.183939704221884465 4.08419086883604621E-8
26 0.520000000000000018 0.183796418429634401 -0.0141381467925742240
27 0.540000000000000036 0.183381567857668515 -0.0271676019807839605
28 0.560000000000000053 0.182716669217487304 -0.0391535357516522645
29 0.579999999999999960 0.181821969378139686 -0.0501577498528595900
30 0.599999999999999978 0.180716511867434454 -0.0602388038506180140
31 0.619999999999999996 0.179418200110394555 -0.0694521743669628405
32 0.640000000000000013 0.177943857558579527 -0.0778504068142278072
33 0.660000000000000031 0.176309284856870752 -0.0854832599702608359
34 0.680000000000000049 0.174529314187597984 -0.0923978437225306121
35 0.700000000000000067 0.172617860925471212 -0.0986387502945474809
36 0.719999999999999973 0.170587972730655124 -0.104248179253945611
37 0.739999999999999991 0.168451876201472006 -0.109266056588119206
38 0.760000000000000009 0.166221021202630853 -0.113730148120445823
39 0.780000000000000027 0.163906122979543406 -0.117676167527839340
40 0.800000000000000044 0.161517202164191437 -0.121137879208628521
41 0.820000000000000062 0.159063622773142788 -0.124147196238530849
42 0.839999999999999969 0.156554128293666411 -0.126734273641762762
43 0.859999999999999987 0.153996875949458961 -0.128927597194074095
44 0.880000000000000004 0.151399469233258754 -0.130754067964697240
45 0.900000000000000022 0.148768988789577172 -0.132239082794837953
46 0.920000000000000040 0.146112021726915342 -0.133406610901388389
47 0.940000000000000058 0.143434689435146284 -0.134279266785993751
48 0.959999999999999964 0.140742673980222749 -0.134878379621434813
49 0.979999999999999982 0.138041243145009956 -0.135224059279484138
50 1 0.135335274181834636 -0.135335259156935755

這個計算器能做什麼

本工具採用經典的四階 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}$$
Advertisement
示意圖展示 y''=F 化簡為方程組 y'=p 和 p'=F(x,y,p)
二階常微分方程被改寫為關於 y 和 p = y' 的耦合一階方程組。
展示從 x 到 x+h 一步中 RK4 四個斜率估計 k1 至 k4 的示意圖
RK4 在每一步結合四個斜率估計,將解從 x 推進到 x+h。

實際範例

以 \(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。

最後更新: