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

解释Matlab输出。ode45是一种迭代算法吗?,matlab,ode,Matlab,Ode,我试着用ode45解一个方程,得到如下输出。我得到的想法是,它试图使用附近的点进行估计(如这里所解释的)。根据我的理解,它应该在一轮计算中解决这个方程?但是输出看起来像ode45是一个迭代算法(因此它生成的输出会一次又一次地重复“…步骤…失败的尝试…函数评估”?如果是迭代的,你能提供一些细节或参考资料吗?谢谢 ode45是一种迭代的自适应ODE解算器。也就是说,它使用一种5阶(FSAL)方法,使用一些步长h来提出更新。然后它又做了同样的事情,但是现在使用了一个四阶方法,然后它将这两个更新相互比较

我试着用ode45解一个方程,得到如下输出。我得到的想法是,它试图使用附近的点进行估计(如这里所解释的)。根据我的理解,它应该在一轮计算中解决这个方程?但是输出看起来像ode45是一个迭代算法(因此它生成的输出会一次又一次地重复“…步骤…失败的尝试…函数评估”?如果是迭代的,你能提供一些细节或参考资料吗?谢谢


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

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


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

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