필터 지우기
필터 지우기

ODE45

조회 수: 2 (최근 30일)
Chembian Parthiban
Chembian Parthiban 2011년 5월 8일
I am running a ODE45 routine from to = 0 to tf = 50 with step = 0.01. After running certain number of loops i get this error message and i am not sure why this is happening and what can i do to get rid of this. I want the routine to run for the complete 5000 routines.
Error Message: Warning: Failure at t=2.220205e+000. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (7.105427e-015) at time t. > In ode45 at 371

답변 (1개)

Adrien Leygue
Adrien Leygue 2011년 5월 8일
First the step in ode45 has little meaning since the method is adaptive and will choose the appropriate time step based on a predictor corrector scheme. The 0.01 step that you might specify through the time vector input is merely a set of time values for which you want the value to be computed. Internally the function might use very different time steps.
Second, since the method adapts the time step, the error that you get simply tells you that in order to satisfy the error tolerance it had to use an extremely small time step which seems unreasonable (i.e. a time step of 1e-15 is simply not feasible if you integrate over several units of time). For you information in molecular dynamics such small tie step can be used but the time integration usually only goes for a few nanoseconds and still it might take weeks to compute.
The reason for the small time step is probably that your system is stiff. In mechanical systems, this would correspond to a very stiff spring, in chemical reactions to a very fast reaction. This might also come from a constraint in the system that you are enforcing using a penalization method.
My advice: use another ODE solver (ODE15s, ODE23S) specifically designed to handle stiff problems. You might also play a bit with tolerances and other parameters you can manipulate through "odeset" and explore methods that also use the jacobian of the "ode function". If you still have problems with the stiff integration methods, you might want to check your program for validity. Each time I have had this type of problem and i could not get rid of it, it turned out I had a bug in my program or i wan considering unphysical parameters.
Hope this helps.
A.

카테고리

Help CenterFile Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by