我有一个庞大的 ODE 系统。由于各种原因,将因变量的值存储在多维数组中是很自然的。例如,这些值可能表示半离散化后 PDE 在 2D 或 3D 网格中某个点的解。
该函数scipy.integrate.odeint采用初始值的向量(即一维数组),并返回相同大小的向量。如果还需要右手边的功能接受并返回向量。因此,必须展平状态向量才能使用scipy.integrate.odeint. 同时,内将状态转换回多维数组、计算导数并将导数数组展平为向量可能会很方便。
这是扁平化(用于传递到f)-> unflattening(用于在内部工作f)->扁平化(用于从 中返回某些东西f)循环正确的做事方式吗?有没有其他更好的方法来设置(通过避免扁平化/非扁平化循环也可能是有效的?