1

我正在尝试解决由物理学场论中的 N 体问题引起的 ODE。为此,我想到了使用 scipy.integrate.odeint 函数,并编写了一些代码,可以在以下位置找到:

http://pastebin.com/yuBbEjwg自首次提出问题以来已更新

但是,当我尝试执行它时,出现以下错误:

Traceback (most recent call last):
  File "./main.py", line 87, in <module>
    solution = odeint(ODE,XV0,t,args=(M,))
  File "/usr/lib/python2.7/site-packages/scipy/integrate/odepack.py", line 143, in odeint
    ixpr, mxstep, mxhnil, mxordn, mxords)
ValueError: object too deep for desired array

有人可以指出我做错了什么吗?为什么我的代码不起作用?另外,我想问一下在我的情况下使用 ode 和 odeint 函数有什么区别吗?

谢谢。

编辑:纠正愚蠢的错误(shape()-> shape),感谢Talonmies指出这一点。上面的链接现在应该指向正确的脚本。

编辑 2:我不知何故怀疑 odeint 函数不喜欢 ODE 函数返回的元组。如果需要解决耦合向量 ODE,有人可以帮助如何格式化元组吗?我发现人们正在解决耦合 ODE 或向量 ODE 的情况,但不是两者都...

编辑 3:我已经修改了示例,以便为 odeinit 函数提供一个初始条件矩阵,并且从名为 ODE 的函数返回的矩阵是相同维度的矩阵......但是,我得到了同样的错误。

4

0 回答 0