MichaelNCSU 发表于 2008-12-15 06:40

ODE45的问题

错误代码是:Unable to meet integration tolerances without reducing the step size below the smallest value allowed (3.552714e-015) at time t
应该是常见错误

遇到这样的问题,是否能够通过把精度要求降低来避免?
此外,ODE45是否一定适合所有的微分方程?我目前所要解的是一个一阶微分方程,是否有更好的函数适合?
另外,所有的人都是用ODE系列的吗?有没有需要用到自己编程的问题?

jww100 发表于 2008-12-15 09:46

估计是你步长太小了,增大一些试试。

ODE45并不适用所有情况:
(1)刚性问题(stiff):方程组的解不同分量的数量级差别较大,对于数值求解是一大困难。Matlab既能解决非刚性问题,也能解决刚性问题。
(2)三个解决非刚性问题的函数:ode45,ode23,ode113
(3)两个解刚性问题的函数:ode15s和ode23s

MichaelNCSU 发表于 2008-12-16 05:33

多谢阿,能不能教我怎么增大步长?linspace?

ch_j1985 发表于 2008-12-16 20:39

回复 板凳 MichaelNCSU 的帖子

试试t = linspace(,,)

yunxiaopk 发表于 2009-5-19 22:25

如何增大步长啊?

如何增大步长啊?我也遇到过类似的问题,谢谢谢谢谢谢

zyl-jd2000 发表于 2009-5-20 12:54

ode45是变步长计算的,为何还要修改步长哪

yunxiaopk 发表于 2009-5-20 17:09

是的,可是总出现这样的问题啊,你帮忙看看怎么解决下,

是的,可是总出现这样的问题啊,你帮忙看看怎么解决下,
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.

chenvy 发表于 2009-5-21 23:54

ode45是变步长的,建议楼主下一个程序ode4

czy 发表于 2010-11-23 20:08

碰到与楼主同样的问题,纠结中,哪位高人指点下啊

hfut_dotaman 发表于 2010-11-23 21:00

我也是啊 郁闷中解决不了 我刚才数学非线性中发了类似的帖子

happy 发表于 2010-11-24 18:07

ode45是自适应步长的计算方法,但是其步长的自适应过程在一定程度上仍然是可控的
其步长是通过设置Options实现的
MaxStep:最大步长,默认为{0.1*abs(t0-tf)}
InitialStep:初始步长

不过一般情况下出现上述问题是,通过调整这些是指很少又能够解决的,主要是方程自身的性质决定的
建议采用ode15s或者ode23s
页: [1]
查看完整版本: ODE45的问题