一道非常非常懵圈的问题

中点的方法:采用中点法对式(2)

img

进行数值求解,size h = 0.01,参数{a = 1, b = 0},初始条件x(0) = 0.1, y(0) = 0。在定义域0≤ t ≤40上绘制积分曲线,如图1所示。

img


给情节标上标签,现在检查数值解中的误差(注意,误差的估计可以通过从中点法取x(t)和从solve_ivp()取x(t)的差来获得)。在本文中,评论一下误差的大小,以及它是如何随着t的变化而变化的。描述一下这个误差应该如何随着size h的变化而变化。(本段不需要数)。
以及利用函数solve_ivp()计算t∈[0,40]范围内a = 1/2的微分方程的数值解。创建一个x作为t的函数的图形,其中四条线对应初始条件x(0)∈{0.1,1,2,3}和y(0) = 0(见图2)。

img


a = 0.5, x'(0)= 0在无驱动van der Pol方程中的解是这两个。

在正文中,写一段描述你对解决方案的观察,突出相似性和差异性以及创建x对y的图,使用(中点的方法)与相同的参数。写一段描述你的图。
最后在a = 0.1, a = 1, a = 2和a = 3的情况下画出极限环,写一段描述极限环如何随着a的增加而变化。

这个应该不难吧,中点法有现成的计算公式直接套用
https://wuli.wiki/online/OdeMid.html
解ivp可以用python里的scipy包包,也有很多例子


关键的可能是van der Pol方程刚性问题,需要一些设置


sol = solve_ivp(odefun, [0, 40], [0.1, 0], t_eval=t, args=(1, 0, 0))
plt.plot(t, np.abs(sol.y[0] - y[0]))
plt.xlabel('$x$')
plt.ylabel('absolute error')

大神看看这个我每次改了都不对