我正在尝试编写一个 python 程序,通过数值积分二阶常微分方程来模拟大量粒子的运动。我首先将 ODE 拆分为两个耦合的一阶 ODE,并使用与该问题scipy.integrate.solve_ivp的答案中描述的类似方法进行求解。但是,我的问题是我想为大量粒子解决这个系统,每个粒子都有不同的初始条件。天真地我可以用一个循环来做到这一点,但我确信 numpy 和 scipy 必须有一种方法可以更快地矢量化这个操作。for
我查看了文档,scipy.integrate.solve_ivp它谈到了矢量化,但不是我想要的方式。我希望对于具有两个耦合的一阶 ODE 和 n 个粒子的系统,您可以将初始条件作为具有大小的数组输入,(2,n)但事实并非如此。
有没有办法解决多个初始条件而不求助于慢 pythonfor循环?
作为参考,我想解决的 ODE 系统看起来像
dx/dt = v
dv/dt = F(x,v)
在数组中具有初始条件,例如
initialConditions = [[x0,v0],[x1,v1],...,[xN,vN]]