Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中过于僵硬的ODE_Python_Matlab_Ode - Fatal编程技术网

Python中过于僵硬的ODE

Python中过于僵硬的ODE,python,matlab,ode,Python,Matlab,Ode,我正在研究一个过于僵硬的Michaelis-Menten类型的系统(已经在Matlab中实现并发布,用ode15s很容易解决)。我将其转换为Python,但没有一个解算器可以超越集成中的步骤2。 我试过: #time t_start = -10 t_end = 12 t_step = 0.01 # Number of time steps: 1 extra for initial condition num_steps = np.floor((t_end - t_start)/t_step)

我正在研究一个过于僵硬的Michaelis-Menten类型的系统(已经在Matlab中实现并发布,用ode15s很容易解决)。我将其转换为Python,但没有一个解算器可以超越集成中的步骤2。 我试过:

#time
t_start = -10
t_end = 12
t_step = 0.01

# Number of time steps: 1 extra for initial condition
num_steps = np.floor((t_end - t_start)/t_step) + 1
[...]
#integration

r = integrate.ode(JahanModel_ODE).set_integrator('lsoda', atol=1e-8,rtol=1e-6)
对于集成商来说:

 r = integrate.ode(JahanModel_ODE).set_integrator('vode',method='bdf', order=5)
具有不同的公差

我得到的只是

UserWarning:lsoda:在这个调用中做了过多的工作(可能是错误的Dfun) 类型)意外的istate=%s“%istate”)

用户警告:vode:此呼叫已完成过多工作。(也许错了。) '意外的istate=%s'%istate))

我还尝试了t_步骤的不同值

这里似乎已经有了一个令人满意的答案:,但这些链接已经不起作用了,谷歌暗示lsoda已经优于LSODE了


编辑:这是完整的代码,没有打印实例

你能发布你的全部代码吗?解决僵硬的系统可能很麻烦,如果我能自己解决这个系统,帮助你会更容易。既然你已经翻译了这段代码,我还建议你检查一下你没有引入任何拼写错误。这些系统对参数的数字或符号的任何变换都很敏感。将
ode15s
的输出输入到Matlab和Python ODE函数中,以确认结果是相同的(在一个较小的数值公差内)。代码似乎太长@davidrpugh,长达15000个字符。我如何上传?因为它主要是复制粘贴,我检查了好几次,所以我认为拼写错误的可能性并没有那么大。不过我会再检查一遍。您是否尝试将代码第1031行中的
order=15
更改为like
order=2
(如果您使用BDF order@qbzenker,请参阅scipy代码:是的,我尝试了不同的顺序、公差以及t_步骤的不同值。没有任何效果。您可以发布您的全部代码吗?解决僵硬的系统可能会很麻烦,如果我可以尝试自己解决系统,则会更容易帮助您。既然您已经翻译了此代码,我还建议est检查您是否没有输入任何打字错误。这些系统可能对参数的数字或符号的任何转置都很敏感。将
ode15s
的输出馈送到您的Matlab和Python ODE函数中应该很简单,以确认结果是相同的(在较小的数字公差内)。代码似乎太长@davidrpugh,15000个字符。我如何上传它?因为它主要是复制和粘贴的,我检查了几次,我认为拼写错误的可能性没有那么大。不过我会再次检查。您是否尝试将代码第1031行中的
order=15
更改为喜欢
order=2
(如果您使用的是BDF order@qbzenker,则来自scipy代码):是的,我尝试了不同的顺序、公差以及t_步骤的不同值。没有任何效果。