重写pythonscipy.integrate.odeint模仿matlab ODE15

2024-09-29 17:14:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的新手,我想在python中使用matlabode15s,而不是scipy的内置odeint。在

代码最初是这样写的:

newRphi = odeint(PSP,Rphi,t,(b,k,F))[-1,:]

其中PSP定义为:

^{pr2}$

从阅读说明书scipy.integrate.odeint(),此函数接受以下格式的参数:

scipy.integrate.odeint(func, y0, t, args=())

也就是说func=PSP, y0=Rphi, t=t, args=(b,k,f) 所以Rphi进入PSP函数,得到积分,变成yy,然后出来,这个函数对t的每个元素重复执行

现在我想把它转换成类似matlab中的ode15s的东西。通过阅读其他的踏板,我发现我可以用

ode.set_integrator('vode', method='bdf', order=15)

现在的问题是,如何将原始参数传递给这个积分器?在

我想它可能看起来像这样:

ode15s = scipy.integrate.ode(f)
ode15s.set_integrator('vode', method='bdf', order=15)
ode15s.set_initial_value(y0, t0)

我知道f是我的PSP函数,y0还是一样的:Rphi, 以下是我的问题:

  1. t0的初始值是多少,是不是只有t[0]?在
  2. 如何将变量(b,k,f)传递给函数f=PSP?在
  3. 当我称之为ode15s时,如何通过t的向量大小进行积分并收集yy的最终值?在

如有任何帮助,将不胜感激。谢谢您。在


Tags: 函数argsintegratorscipyfuncodeintegrateset

热门问题