www.gusucode.com > matlab 案例源码 matlab代码程序 > matlab/ODEWithCrudeErrorThresholdExample.m
%% ODE With Crude Error Threshold % Compared to |ode45|, the |ode23| solver is better at solving problems % with crude error tolerances. %% % Compare the performance of |ode45| and |ode23| by solving the % moderately-stiff ODE % % $$y' = -\lambda y$$ % % for $\lambda = 1000$. This ODE is a test equation that becomes % increasingly stiff as $\lambda$ increases. Use |odeset| to turn on the % display of solver statistics. opts = odeset('Stats','on'); tspan = [0 2]; y0 = 1; lambda = 1e3; subplot(1,2,1) disp('ode45 stats:') tic, ode45(@(t,y) -lambda*y, tspan, y0, opts), toc title('ode45') subplot(1,2,2) disp(' ') disp('ode23 stats:') tic, ode23(@(t,y) -lambda*y, tspan, y0, opts), toc title('ode23') %% % For this moderately stiff problem, |ode23| executes slightly faster than % |ode45| and also has fewer failed steps. The step sizes taken by |ode45| % and |ode23| for this problem are limited by the stability requirements of % the equation rather than by accuracy. Since steps taken by |ode23| are % cheaper than with |ode45|, the |ode23| solver executes quicker even % though it takes more steps.