通过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

这个计算器能做什么

本工具采用经典的四阶龙格-库塔(RK4)方法,在区间 [x0, xn] 上数值求解形如 \(y'' = F(x,\,y,\,y')\) 的二阶常微分方程。你只需输入方程右端 F(用 x、y 和 p 表示的数学表达式,其中 p 代表 y')、初始条件 y(x0) 与 y'(x0)、区间端点以及步数。计算器会返回 x、y 与 y' 的完整数值表,并给出端点处的结果。这是纯粹的数值分析方法,普遍适用,不受任何国家或地区限制。

使用方法

先输入 F(x, y, p)——例如对于 \(y'' + 4y' + 4y = 0\),可填写 -4*p - 4*y。设定 x0、y0 = f(x0) 以及 p0 = y'(x0),再设定终点 xn,并选择子区间数 n(n 越大,步长 \(h = \frac{\text{xn} - \text{x0}}{\text{n}}\) 越小,精度越高)。最后选择结果显示的有效数字位数。RK4 的全局误差为 \(O(h^4)\),因此把 n 翻倍,误差大约会缩小到原来的 1/16。

公式原理

令 \(p = y'\),即可把一个二阶常微分方程降阶为两个一阶方程组成的方程组:此时 \(y' = p\),\(p' = F(x, y, p)\)。RK4 在每一步通过四次加权斜率计算同时推进这两个未知量(k 对应 y,j 对应 p),并按 \((k_1 + 2k_2 + 2k_3 + k_4)/6\) 与 \((j_1 + 2j_2 + 2j_3 + j_4)/6\) 进行加权合成。

$$\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}$$$$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)$$
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。

最后更新: