【发布时间】:2014-08-17 16:03:09
【问题描述】:
我正在将模型从 MATLAB 转换为 Python。该模型的症结在于 MATLAB 的 ode15s。在 MATLAB 执行中,ode15s 有标准选项:
options = odeset()
[t P] = ode15s(@MODELfun, tspan, y0, options, params)
作为参考,y0 和 MODELfun 一样是一个向量(大小为 98)。
我的 Python 尝试如下:
ode15s = scipy.integrate.ode(Model.fun)
ode15s.set_integrator('vode', method = 'bdf', order = 15)
ode15s.set_initial_value(y0).set_f_params(params)
dt = 1
while ode15s.successful() and ode15s.t < duration:
ode15s.integrate(ode15s.t+dt)
不过,这似乎不起作用。有什么建议或替代方案吗?
编辑: 查看输出后,我从 Python 得到的结果要么是 y0 的某些元素随着时间的推移没有变化,要么是 y0 的其余部分在每个步骤中都保持不变。有这样的经验吗?
【问题讨论】:
-
"...似乎无法正常工作。"那是什么意思?你有错误吗?意想不到的结果?请澄清。
-
您确定您已将
MODELfun中的Matlab 代码正确翻译成Python 吗? (仔细检查代码,并通过选择一些随机时间和参数值进行验证,并检查函数MODELfun和Model.fun是否给出相同的结果。)
标签: python matlab scipy ode integrate