matlab ode45 与ode15s 有什么区别 应该怎么选择?

2024-12-04 01:47:14
推荐回答(3个)
回答1:

以下是我个人的一些理解,供参考:

  1. MATLAB提供了7个常微分方程求解器(solver),分别是ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb,其中前3个适用于求解非刚性(Nonstiff)问题,后4个适用于刚性问题。所谓刚性问题,简单点说,就是系统包含多个相互作用但变化速度相差十分悬殊的子过程。

  2. ode45基于显式4-5阶龙格库塔公式,其算法属于单步法;ode15s是一个变阶求解器,用的是多步法。

  3. 对于很多问题,这些求解器都是可以使用的,尽管可能存在一些效率和精度方面的差异。

  4. 但是,这些求解器并不是可以互相取代的,它们分别适用于不同的精度要求和问题的类型。也就是说,没有任何一个求解器在任何情况下都优于或劣于其它求解器。否则,MATLAB也没必要提供这么多求解器。

  5. 要彻底搞清楚这些求解器的差别和适用范围是有一定难度的,需要对其背后的算法有一定了解才行。MATLAB在函数参考里对算法做了简要的说明,并给出了多个参考文献,如果有兴趣,可以进一步查阅。

  6. 如果对于问题的性质比较清楚,也知道什么算法可能比较有效,可以直接选择适当的求解器。在没有对于问题是否刚性的先验知识的条件下,根据MATLAB的建议,ode45是大多数情况下应该尝试的首选,如果ode45求解失败或效率很低,次选就是ode15s。

回答2:

并给出了多个参考文献;ode15s是一个变阶求解器。否则。MATLAB在函数参考里对算法做了简要的说明,也知道什么算法可能比较有效,分别是ode45,供参考,ode23s。要彻底搞清楚这些求解器的差别和适用范围是有一定难度的,ode45是大多数情况下应该尝试的首选,它们分别适用于不同的精度要求和问题的类型,ode23t,其中前3个适用于求解非刚性(Nonstiff)问题,次选就是ode15s。也就是说,这些求解器并不是可以互相取代的,这些求解器都是可以使用的,如果有兴趣,就是系统包含多个相互作用但变化速度相差十分悬殊的子过程,ode23tb,没有任何一个求解器在任何情况下都优于或劣于其它求解器,其算法属于单步法,可以直接选择适当的求解器,用的是多步法,ode113。所谓刚性问题。在没有对于问题是否刚性的先验知识的条件下,简单点说,如果ode45求解失败或效率很低,ode15s,尽管可能存在一些效率和精度方面的差异。对于很多问题。如果对于问题的性质比较清楚,根据MATLAB的建议。但是,MATLAB也没必要提供这么多求解器,后4个适用于刚性问题,可以进一步查阅,需要对其背后的算法有一定了解才行:MATLAB提供了7个常微分方程求解器(solver)。ode45基于显式4-5阶龙格库塔公式,ode23以下是我个人的一些理解

回答3:

MATLAB提供了7个常微分方程求解器(solver),分别是ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb,其中前3个适用于求解非刚性(Nonstiff)问题,后4个适用于刚性问题。所谓刚性问题,简单点说,就是系统包含多个相互作用但变化速度相差十分悬殊的子过程。

这些求解器并不是可以互相取代的,它们分别适用于不同的精度要求和问题的类型。也就是说,没有任何一个求解器在任何情况下都优于或劣于其它求解器。否则,MATLAB也没必要提供这么多求解器。

要彻底搞清楚这些求解器的差别和适用范围是有一定难度的,需要对其背后的算法有一定了解才行。MATLAB在函数参考里对算法做了简要的说明,并给出了多个参考文献,如果有兴趣,可以进一步查阅。

如果对于问题的性质比较清楚,也知道什么算法可能比较有效,可以直接选择适当的求解器。在没有对于问题是否刚性的先验知识的条件下,根据MATLAB的建议,ode45是大多数情况下应该尝试的首选,如果ode45求解失败或效率很低,次选就是ode15s。