【问题标题】:Explain Matlab ode45 output. Is ode45 an iterative algorithm?解释 Matlab ode45 输出。 ode45 是迭代算法吗?
【发布时间】:2019-01-07 05:43:08
【问题描述】:

我尝试使用 ode45 求解方程,并得到如下输出。我知道它正在尝试使用附近的点进行估计(如此处所述https://www.mathworks.com/videos/solving-odes-in-matlab-6-ode45-117537.html)。根据我的理解,它应该在一轮计算中解决方程?但是输出看起来像 ode45 是一种迭代算法(因此它生成的输出一遍又一遍地重复“......步骤......失败的尝试......函数评估”)?如果它是迭代的,你能帮忙提供一些细节或参考吗?谢谢!

【问题讨论】:

  • 这不是 ode45 的通常输出。你到底使用了什么命令?该方法有 7 个阶段,在下一步中重新使用最后一个值,因此每个段有 6*n+1 次函数评估。查找“Runge-Kutta 方法”并查看 2 阶和 4 阶方法的一些实现,以查看随处可见的时间数组的循环。

标签: matlab ode


【解决方案1】:

ode45 是一个迭代自适应 ODE 求解器。也就是说,它使用 5 阶 (FSAL) 方法来提出使用某个步长 h 的更新。然后它再次执行相同的操作,但现在使用 4 阶方法,然后将这两个更新相互比较,如果差异小于某个局部容差,则接受建议的更新。如果差异大于某个局部容差,则拒绝更新并降低步长(以某种智能方式)。

为了降低同时使用 4 阶和 5 阶方法的成本,这两种方法使用(大致)相同的函数评估。

至于您的输出,正如@LutzL 所指出的,它不是标准输出,它可能指向您的代码中的错误。

【讨论】:

    猜你喜欢
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多