我正在数值求解以下形式的线性耦合 ODE
蓝线在左轴,橙线在右轴。我在 python 中使用 scipy 的 Runge-Kutta 45 实现来解决 ODE 并有一个数组和在我开始之前(即它不是一个函数,而是从任意采样数据派生的)。
只要我施加足够小的max_step参数来捕捉快速变化,我就可以获得准确的解决方案,但这需要很长时间,而且我处于对性能敏感的应用程序中。例如,我需要对这个函数进行大约 100k 的函数评估才能获得良好的收敛性(1E-4 精度)。当然,求解器在系数不变的区域浪费了大量时间/函数调用。我手头也有系数数组,并且在某种意义上已经知道问题点在哪里,并且应该能够事先告诉求解器它们。
我的问题是:如何有效地求解具有脉冲系数的 ODE? 或者,有没有比使用 RK45 更好的方法来解决采样数据的 ODE? 我只是对系数进行插值并将其像连续函数一样传递给求解器,但我不确定其他人会推荐什么。
编辑:另一个想法,有没有办法以正交方式解决这个ODE,就像解决方案一样只是? 即使通过对角化我也看不到简单的方法因为它取决于,但谁知道呢?实际上,该等式是否适用于带有矩阵求幂的矩阵?事情没有那么简单,不是吗?
