我们在微分方程的标准型转换中已经提到的Van der Pol方程就是一种刚性微分方程。
刚性微分方程可能有几个状态变量,其中某个状态变量变化的特别快,远远的快于其他的状态变量,这样就会使得常规算法中,选择步长出现问题。
再谈Van der Pol方程:
计算mu=1000时的Van der Pol方程的数值解。
h_opt=odeset;
h_opt.RelTol=1e-6;
x0=[2;0];
t_final=3000;
f=@(t,x,mu)[x(2);-mu*(x(1)^2-1)*x(2)-x(1)];
tic,mu=1000;
[t,y]=ode15s(f,[0,t_final],x0,h_opt,mu);toc
plot(t,y(:,1));figure;plot(t,y(:,2))