数学建模(生物数学篇)之 MATLAB在求解高阶微分方程时的应用实例(3/3)

一、实验目的:

理解并掌握利用MATLAB在求解高阶微分方程时的应用。

二、实验内容
求解高阶微分方程时,可想办法将其变为几个一阶微分方程组成的微分方程组。
例1   ,选择变量 可得出一阶微分方程组为


 
例2  设系统模型以二元方程组形式给出 , 试将其转化为一阶微分方程组。
解  选择变量 ,再消去其中一个高阶导数。
从第一个式子可得出 ,再将其代入第二个式子中,解出

 

练习1  求初值问题的数值解,并画出的图形和数值解的相图。

练习2  考虑Vanderpol方程,与之等价的方程组有

扫描二维码关注公众号,回复: 15496492 查看本文章

       对参数时,求出此方程组3个不同初值的解并绘制相图,并尝试在同一个坐标系里将它们的相轨线绘制出来。

  1. 练习一

程序代码:

被调用的untitled10_diaoyong.mlx文件(实时编辑器脚本)

function dx=untitled10_diaoyong(t,x)

dx=zeros(2,1);

dx(1)=x(2);

dx(2)=7.5*cos(t)-x(1)^3-0.05*x(2);

return

end

运行的untitled10.mlx文件

[t,x]=ode45('untitled10_diaoyong',[0:0.05:40],[3,4]);

plot(t,x);

figure;

plot(x(:,1),x(:,2));

程序测试及运行结果:

  1. 练习二

程序代码:

被调用的untitled11_diaoyong.mlx文件(实时编辑器脚本)

function dy=untitled11_diaoyong(t,y)

u=0.1;dy=zeros(2,1);

dy(1)=y(2)-u*((y(1)^3)/3-y(1));

dy(2)=-y(1);

return

end

运行的untitled11.mlx文件

[t1,Y1]=ode45('untitled11_diaoyong',[-10:0.1:10],[-2,-2]);

[t2,Y2]=ode45('untitled11_diaoyong',[-10:0.1:10],[0.7,-0.7]);

[t3,Y3]=ode45('untitled11_diaoyong',[-10:0.1:10],[2,0]);

numso15=[t1,Y1,t2,Y2,t3,Y3];

subplot(3,1,1),plot(t1,Y1,'-r');

subplot(3,1,2),plot(t2,Y2,'-b');

subplot(3,1,3),plot(t3,Y3,'-g');

figure;

plot(Y1(:,1),Y1(:,2),'-r');

hold on;

plot(Y2(:,1),Y2(:,2),'-b');

plot(Y3(:,1),Y3(:,2),'-g');

程序测试及运行结果:

分析与讨论:

  1. MATLAB求解高阶微分方程的ode45方法应用。 

ode45实际上是数值分析中数值求解微分方程组的一种方法,4阶五级Runge-Kutta算法。其调用方法为:

[t,x]=ode45(Fun,tspan,x,options,pars)

Fun就是你要求解的微分方程组,微分方程组必须化成现代控制理论中的一阶微分方程组形式,之后定义.m函数亦或是匿名函数

猜你喜欢

转载自blog.csdn.net/qq_59819866/article/details/131454212