我是一名初学程序员,我想使用ode' dopri5'来集成一个函数,但我不认为我正确地做了。该参考文献没有多大帮助,而且我有一个我不认识的错误。所以,最初我使用odeint,它工作正常。这是一大堆代码:
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是类型' ode'虽然我需要它是一个浮点数,就像odeint给我的那样。
这是特定错误,(我试图从浮点数中减去Itmp):
unsupported operand type(s) for -: 'ode' and 'float'
当我使用python调试器并尝试打印出Itmp时,它会给我
<scipy.integrate._ode.ode object at 0x10d6ab410>
我继续之后因上述错误而停止。我猜测我没有正确写出ode命令。任何帮助将不胜感激!
答案 0 :(得分:0)
ode
类的构造函数的返回值是类型ode
的实例对象。此时,没有进行任何整合。为此,您需要调用积分器的步进函数。在该步骤之后,新状态位于y
对象的ode
字段中。
有关详细信息,请参阅ode
课程的文档。
您应该注意到,既没有将初始条件也没有将积分间隔的结束传递给积分器。