0
我是一个开始的程序员,我想集成一个使用ode'dopri5'的函数,但我认为我没有正确地做。这个参考没有太大的帮助,而且我有一个我不认识的错误。所以,最初我使用odeint,它工作正常。下面是代码块:运行ode,dopri5方法,错误:不支持的操作数类型'ode'
Itmp = odeint(te.rhs, Itmp, [xLim[i], xLim[i+1]], mxstep=10000,
atol=1e-11, rtol=1e-11, args=(f,))[1]
而且我尝试使用dopri5整合是这样的:
Itmp = ode(te.rhs).set_integrator('dopri5', max_step=10000,atol=1e-11, rtol=1e-11)
我得到的错误是说ITMP类型为“颂歌”,而我需要它像odeint给我的一个浮子。
下面是具体的错误,(我尝试从一个浮动减去ITMP):
unsupported operand type(s) for -: 'ode' and 'float'
当我使用Python调试器,并尝试打印出ITMP,它给了我
<scipy.integrate._ode.ode object at 0x10d6ab410>
而我继续它停止与上述错误。我猜测我没有正确写出ode命令。任何帮助将不胜感激!
请问您可以发布[mcve]吗?就目前而言,很难说出问题的起因。唯一想到的是,你对初始条件和集成对象('Itmp')使用相同的变量名,这是非常糟糕的做法,并可能导致错误。 – Wrzlprmft
您是否考虑过ODE函数的不同参数顺序? 'odeint'需要'odefunc(state,time)','ode'使用'odefunc(time,state)'。 – LutzL