微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在python中对odient给出任意初始条件

如何解决如何在python中对odient给出任意初始条件

我正在尝试解决一个变量中的一阶线性微分方程,目前我正在使用 scipy.integrate 中的 odient 模块。然而,它在 $y_0$ 中采用的初始条件是在域 $x_0$ 的初始边界处计算的,而我所拥有的是在某个随机点 $x$ 处的 $y$ 值。

对类似问题的建议是使用solve_bvp,这也不能完全解决我的问题。

我该怎么做?

解决方法

数值积分器总是从初始点只向一个方向前进。要获得双边解,必须向前和向后调用数值积分器两次,例如

ta = np.linspace(x0,a,Na+1)
ya = odeint(f,y0,ta)
tb = np.linspace(x0,b,Nb+1)
yb = odeint(f,tb)

您可以将这两部分分开以供进一步使用,例如绘图,或者将它们分别合并为一个数组

t=np.concatenate([ta[::-1],tb[1:]])
y=np.concatenate([ya[::-1],yb[1:]])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。