用四阶米尔恩法求解区间[a,b]的常微分初值问题(柯西问题) f epsilon a y(a) b f 是方程数,方程的形式为 y'=f(x,y)。 通过 get_function输入编号获取函数。 应该自己定义并且重新计算步长h。 提示:四阶米尔恩法求解柯西问题需要设定多于1个起始点。所以,需要通过其他几种方法来计算其他三个起始点。你需要自己选择方法来计算起始点。初始值数集会影响最后结果。米尔尼法的三个初始值怎么算,怎么迭代修正误差
时间: 2023-06-19 11:08:00 浏览: 127
首先,我们可以利用龙格-库塔法(RK4)计算出一个初始点的值,然后利用这个值和四阶龙格-库塔法的公式来计算出另外三个初始点的值。
具体来说,设已知初始点 $(x_0, y_0)$,我们可以用四阶龙格-库塔法计算出 $y_1$:
$$
\begin{aligned}
k_1 &= hf(x_0, y_0) \\
k_2 &= hf(x_0 + \frac{h}{2}, y_0 + \frac{k_1}{2}) \\
k_3 &= hf(x_0 + \frac{h}{2}, y_0 + \frac{k_2}{2}) \\
k_4 &= hf(x_0 + h, y_0 + k_3) \\
y_1 &= y_0 + \frac{1}{6}(k_1 + 2k_2 + 2k_3 + k_4)
\end{aligned}
$$
然后,利用米尔恩法的公式来计算另外三个初始点的值:
$$
\begin{aligned}
y_2 &= y_0 + \frac{h}{3}(f(x_0, y_0) + 4f(x_0 + \frac{h}{2}, y_1) + f(x_0 + h, y_0 + 2hf(x_0 + \frac{h}{2}, y_1))) \\
y_3 &= y_0 + \frac{h}{8}(f(x_0, y_0) + 3f(x_0 + \frac{h}{2}, y_1) + 3f(x_0 + \frac{h}{2}, y_2) + f(x_0 + h, y_0 + hf(x_0 + \frac{h}{2}, y_2))) \\
y_4 &= y_0 + \frac{h}{90}(7f(x_0, y_0) + 32f(x_0 + \frac{h}{4}, y_1) + 12f(x_0 + \frac{h}{2}, y_2) + 32f(x_0 + \frac{3h}{4}, y_3) + 7f(x_0 + h, y_0 + hf(x_0 + h, y_3)))
\end{aligned}
$$
其中,$y_1$ 是用 RK4 计算得到的,而 $y_2$、$y_3$、$y_4$ 则是用上一步计算得到的 $y_0$、$y_1$、$y_2$ 来计算的。
接下来,我们可以利用米尔恩法的公式来迭代求解常微分方程:
$$
y_{n+1} = y_n + \frac{h}{3}(f(x_n, y_n) + 4f(x_n + \frac{h}{2}, y_{n+\frac{1}{2}}) + f(x_n + h, y_{n+1}))
$$
其中,$y_{n+\frac{1}{2}}$ 可以用 RK4 计算得到,即:
$$
y_{n+\frac{1}{2}} = y_n + \frac{h}{2}f(x_n, y_n) + \frac{h}{2}f(x_n + h, y_{n+1})
$$
这样,我们就可以用四阶米尔恩法来求解常微分初值问题了。
阅读全文