ODE45的问题
错误代码是:Unable to meet integration tolerances without reducing the step size below the smallest value allowed (3.552714e-015) at time t应该是常见错误
遇到这样的问题,是否能够通过把精度要求降低来避免?
此外,ODE45是否一定适合所有的微分方程?我目前所要解的是一个一阶微分方程,是否有更好的函数适合?
另外,所有的人都是用ODE系列的吗?有没有需要用到自己编程的问题? 估计是你步长太小了,增大一些试试。
ODE45并不适用所有情况:
(1)刚性问题(stiff):方程组的解不同分量的数量级差别较大,对于数值求解是一大困难。Matlab既能解决非刚性问题,也能解决刚性问题。
(2)三个解决非刚性问题的函数:ode45,ode23,ode113
(3)两个解刚性问题的函数:ode15s和ode23s 多谢阿,能不能教我怎么增大步长?linspace?
回复 板凳 MichaelNCSU 的帖子
试试t = linspace(,,)如何增大步长啊?
如何增大步长啊?我也遇到过类似的问题,谢谢谢谢谢谢 ode45是变步长计算的,为何还要修改步长哪是的,可是总出现这样的问题啊,你帮忙看看怎么解决下,
是的,可是总出现这样的问题啊,你帮忙看看怎么解决下,Warning: Failure at t=1.000323e+000.Unable to meet integration tolerances without reducing the step size
below the smallest value allowed (3.553861e-015) at time t. ode45是变步长的,建议楼主下一个程序ode4 碰到与楼主同样的问题,纠结中,哪位高人指点下啊 我也是啊 郁闷中解决不了 我刚才数学非线性中发了类似的帖子 ode45是自适应步长的计算方法,但是其步长的自适应过程在一定程度上仍然是可控的
其步长是通过设置Options实现的
MaxStep:最大步长,默认为{0.1*abs(t0-tf)}
InitialStep:初始步长
不过一般情况下出现上述问题是,通过调整这些是指很少又能够解决的,主要是方程自身的性质决定的
建议采用ode15s或者ode23s
页:
[1]