有没有办法强制ODEINT在Python中使用特定的算法?
从我所看到的,odeint似乎自动决定它想要使用哪种算法。然而,我正在使用的数学在收敛方面非常挑剔,我想对使用哪种算法有更多的控制。我尝试过使用ode(特别是vode),但由于所有的运动部件,我很难调试它。我真的对分解我正在使用的ode解算器的所有细节不感兴趣:我只是希望能够告诉odeint使用一个特定的alogrithm并结束它。这是可能的,还是我需要调试ode?odeint使用的LSODA方法会自动在Adam的方法(非刚性)和BDF(刚性)之间切换,就我看来,它不允许更改此行为 如果您正在寻找具有类似界面但可以显式选择集成方法的解算器,请查看scipy的。有没有办法强制ODEINT在Python中使用特定的算法?,python,python-3.x,ode,odeint,Python,Python 3.x,Ode,Odeint,从我所看到的,odeint似乎自动决定它想要使用哪种算法。然而,我正在使用的数学在收敛方面非常挑剔,我想对使用哪种算法有更多的控制。我尝试过使用ode(特别是vode),但由于所有的运动部件,我很难调试它。我真的对分解我正在使用的ode解算器的所有细节不感兴趣:我只是希望能够告诉odeint使用一个特定的alogrithm并结束它。这是可能的,还是我需要调试ode?odeint使用的LSODA方法会自动在Adam的方法(非刚性)和BDF(刚性)之间切换,就我看来,它不允许更改此行为 如果您正在寻
它有一个可选参数
method
,允许您选择集成方法。请确保不要选择“LSODA”,否则您将再次遇到相同的问题。在我看到有人在ODE函数中执行复杂操作的许多情况下,更好的解决方案是使用事件机制来保持ODE函数平滑,并在相位边界处精确(一次)更改模型。第二个最常见的是一些黑客的东西,以实现延迟或随机噪声,这将更好地由专用DDE或SDE解决方案服务。