常微分方程数值求解
上一节
下一节
视频
拓展学习
例1 求解微分方程初值问题,并与精确解进行比较。
f=@(t,y) (y^2-t-2)/4/(t+1);
[t,y]=ode23(f,[0,10],2);
y1=sqrt(t+1)+1;
plot(t,y,'b:',t,y1,'r');
例2 已知一个二阶线性系统的微分方程,取a=2,绘制系统的时间响应曲线和相平面图。
f=@(t,x) [-2,0;0,1]*[x(2);x(1)];
[t,x]=ode45(f,[0,20],[1,0]);
subplot(2,2,1);plot(t,x(:,2));
subplot(2,2,2);plot(x(:,2),x(:,1));
例3 假如点燃一个火柴,已知火焰球简化模型,分析λ的大小对方程求解过程的影响。
lamda=0.01;
f=@(t,y) y^2-y^3;
tic;[t,y]=ode45(f,[0,2/lamda],lamda);toc
disp([‘ode45计算的点数' num2str(length(t))]);
lamda=1e-5;
f=@(t,y) y^2-y^3;
tic;[t,y]=ode45(f,[0,2/lamda],lamda);toc
disp(['ode45计算的点数' num2str(length(t))]);
lamda=1e-5;
f=@(t,y) y^2-y^3;
tic;[t,y]=ode15s(f,[0,2/lamda],lamda);toc
disp(['ode15s计算的点数' num2str(length(t))]);

