What function should I choose while sometimes ode45 will fall into endless loop?
2 次查看(过去 30 天)
显示 更早的评论
Actually,the problem to solve sometimes don't have a solution. In this case, the ode45 will fall into endless loop, and could not stop itself. As a build-in function, tic-toc control can not apply to it, so I try to use other ode-functions, they all will automatically stop and throw a warning. That's good for me. But I'm not sure if they can always do this everytime. In all, my question is: is there a function of ode that will never fall into endless loop? If there is or there are, please name it or them, and I would really appreciate if the reason can be explain.
0 个评论
采纳的回答
Jan
2011-7-8
As far as I know, ODE45 does never fall into an infinite loop. But the stepsize can be very small, such that the calculation take a lot of time. Then limiting the smallest step size is helpful usually.
Another idea is using an Event function, which drops a terminal event after a specified amount of time. A persistent variable in side this Event function might be usful for this job.
5 个评论
Jan
2011-7-11
The event function is triggered, if the value changes its sign, but "double(toc<0.00001)" is 1 always. In addition the solver tries to locate the exact time of the event by further evaluations of the ODE. Perhaps it is a more stable idea to modify a copy(!) of the ODE45 function, e.g. with a limit the number of calculated steps.
Concerning the email: *One* email would not be a problem, but I get too many of them comming from this forum. And most of them are less polite than you are. Thanks.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!