解释 Matlab ode45 输出。 ode45 是迭代算法吗?

Explain Matlab ode45 output. Is ode45 an iterative algorithm?

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

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

为了降低同时使用四阶和五阶方法的成本,这两种方法使用(大致)相同的函数求值。

至于您的输出,正如@LutzL 也指出的那样,它不是标准输出,这可能表明您的代码中存在错误。