www.gusucode.com > matlab 案例源码 matlab代码程序 > matlab/ODE23SolveNonstiffEquationExample.m

    %% Solve Nonstiff Equation
% The van der Pol equation is a second order ODE
%
% $$y''_1 - \mu \left( 1 - y_1^2\right) y'_1+y_1=0,$$
%
% where $\mu > 0$ is a scalar parameter. Rewrite this equation as a system
% of first-order ODEs by making the substitution $y'_1 = y_2$. The
% resulting system of first-order ODEs is
%
% $$
% \begin{array}{cl}
% y'_1 &= y_2\\
% y'_2 &= \mu (1-y_1^2) y_2 - y_1.\end{array}
% $$
%

%% 
% The function file |vdp1.m| represents the van der Pol equation using $\mu
% = 1$. The variables $y_1$ and $y_2$ are the entries |y(1)| and |y(2)| of
% a two-element vector, |dydt|.
%
% <include>vdp1.m</include>
%

%% 
% Solve the ODE using the |ode23| function on the time interval |[0 20]|
% with initial values |[2 0]|. The resulting output is a column vector of
% time points |t| and a solution array |y|. Each row in |y| corresponds to
% a time returned in the corresponding row of |t|. The first column of |y|
% corresponds to $y_1$, and the second column to $y_2$.
[t,y] = ode23(@vdp1,[0 20],[2; 0]);

%%
% Plot the solutions for $y_1$ and $y_2$ against |t|.
plot(t,y(:,1),'-o',t,y(:,2),'-o')
title('Solution of van der Pol Equation (\mu = 1) with ODE23');
xlabel('Time t');
ylabel('Solution y');
legend('y_1','y_2')