Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法强制ODEINT在Python中使用特定的算法?_Python_Python 3.x_Ode_Odeint - Fatal编程技术网

有没有办法强制ODEINT在Python中使用特定的算法?

有没有办法强制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(刚性)之间切换,就我看来,它不允许更改此行为 如果您正在寻

从我所看到的,odeint似乎自动决定它想要使用哪种算法。然而,我正在使用的数学在收敛方面非常挑剔,我想对使用哪种算法有更多的控制。我尝试过使用ode(特别是vode),但由于所有的运动部件,我很难调试它。我真的对分解我正在使用的ode解算器的所有细节不感兴趣:我只是希望能够告诉odeint使用一个特定的alogrithm并结束它。这是可能的,还是我需要调试ode?

odeint使用的LSODA方法会自动在Adam的方法(非刚性)和BDF(刚性)之间切换,就我看来,它不允许更改此行为

如果您正在寻找具有类似界面但可以显式选择集成方法的解算器,请查看scipy的。
它有一个可选参数
method
,允许您选择集成方法。请确保不要选择“LSODA”,否则您将再次遇到相同的问题。

在我看到有人在ODE函数中执行复杂操作的许多情况下,更好的解决方案是使用事件机制来保持ODE函数平滑,并在相位边界处精确(一次)更改模型。第二个最常见的是一些黑客的东西,以实现延迟或随机噪声,这将更好地由专用DDE或SDE解决方案服务。