Simulink如何实现Runge-Kutta解算器?

时间:2014-02-05 11:34:39

标签: matlab simulink floating-accuracy ode

我对math.stackexchange.com中的同一主题有疑问:https://math.stackexchange.com/questions/664422/how-does-matlab-simulink-get-such-accurate-ode-solution-results,它仍然保持打开状态。

我希望了解Simulink如何准确地解决ODE,据称是四阶Runge-Kutta求解器(ODE4)远远超过我迄今为止开发的任何实现。要么我错误地实现了算法,要么Simulink正在幕后做额外的工作以提高准确性。我已经在数学堆栈交换网站上询问了潜在的数学方法,我在这里询问有关提高准确度的计算机科学方法。

我的兴趣来自于需要使用不同的解决方法来理解模型稳定性,而不知道Simulink正在做什么来获得准确性意味着在某些情况下对其潜在稳定性的了解不足。

2 个答案:

答案 0 :(得分:1)

我认为这与整合方法的节能有一些联系。

他们可能正在使用改进的RK方法而没有这种能量漂移。

http://en.wikipedia.org/wiki/Symplectic_integrator

答案 1 :(得分:0)

事实证明,简单的Runge-Kutta方法与正确实施时的Simulink定义一样准确。几个实现错误导致正确实现的解决方案产生相对较小但明确的错误。

这个问题的答案是Simulink按照文献中的协议实现了RK求解器,没有专有的改进。