水利水电学校机电工程系 甘肃 兰州 730050;兰州理工大学机电工程学院 甘肃 兰州 730050;
汪丫入 兰州军区总医院静脉药物配置中心 甘肃 兰州 730050
摘 要:Matlab是当今最优秀的科技应用软件之一。基于Matlab强大的数据分析、数值计算功能,本文主要讨论了Matlab在高等数学研究及教学中的应用。在研究和教学中,融入Matlab辅助计算,把理论性知识转化为实践性知识,便于学生对抽象问题的研究和理解,起到高效、实用的效果,并且对学生未来解决专业性、实际性等问题奠定了基础。
关键词:Matlab软件 微分方程 抽象问题
一、应用Matlab解决线性微分方程的求解问题
微分方程是描述动态系统最常用的数学工具,也是近代数学的一个重要的学科分支。随着现代社会的发展,无论是在工程、宇航等自然科学领域,还是在经济、金融、保险等社会学科领域,微分方程都有着十分广泛的应用。因此,能熟练利用Matlab函数或自行编写的程序求解相关问题显得非常重要。
1.一阶微分方程解及解析式。
例1:。
编写如下语句:
在Matlab窗口输入命令:dsolve(`Dy-5*exp(0.5*t)+0.7*y=0`,`y(0)=1’,`t`)
输出解析式为:ans=(25*exp((6*t)/5)*exp(-(7*t)/10))/6 -(19*exp(-(7*t)/10))/6
编写如下语句:
function y=f(t,y);
y=dsolve(‘Dy-5*exp(0.5*t)+0.7*y=0’,’y(0)=1’,’t’);
ezplot(y,[0,3])
hold on
plot(t,y);
程序运行结果如图1所示。
图1:求一阶微分方程解的图示
2.求解一阶微分方程组
例2:其中,t=0时,y1=1和y2=2
调用ode45函数编写如下程序:
clear,clc
y0=[2,1];
span=[0,20];
odefun=@(t,y)[1.2*y(1)-0.6*y(1)*y(2);
-0.8*y(2)+0.3*y(1)*y(2)];
[t,y]=ode45(odefun,span,y0,0.005);
Y=[y(:,1) y(:,2)];
figure
plot(t,y)
figure
plot(y(:,1),y(:,2))
legend(‘y1’,’y2’);
程序运行结果如图2、3所示
图3:ode45函数求解一阶微分方程相平面曲线
3.求解高阶微分方程组。
二、应用Matlab解决非线性微分方程的求解问题——隐式微分方程(IDE)
近年来,伴随着隐式微分方程理论的发展及其在突变理论、奇异理论等多门学科中的应用,隐式微分方程边值问题成为关注的一个热点。
因此,求解隐式微分方程显得尤为重要。所谓隐式微分方程就是那些不能直接转换为一阶显式常微分方程组的微分方程。
4.隐式微分方程的求解
编写程序如下:
function dy=Idefun5(t,x)
f=@(p)[4*p(1)*cos(x(4))+p(2)^2+x(1)*x(3)*exp(-x(4))-8*x(1)*p(1)*x(4);
x(1)*p(2)+p(1)*sin(p(2))+5*x(3)*x(2)*exp(-x(2))+0.02];
options =optimset(‘Display’,’off’);
y=fsolve(f,x([1,3]),options);
dy=[x(2);y(1);x(4);y(2)];
主程序:
[t,y]=ode45(@Idefun5,[0 4.5],[1 0 0 1]);
width=[4,4,4,4];
for k=1:4
plot(t,y(:,k),’LineWidth’,width(k))
grid on
hold all
end
h=legend(‘\itx’,’\itx’’’,’\ity’,’\ity’’’,2);
set(h,’fontname’,’times’,’fontsize’,20)
程序运行结果如图4所示
图4: 隐式方程的时间响应曲线
例4:求解二阶非齐次非线性振动微分方程
已知x=x=0,m=40,c1=1,c2=10,g=9.8,k=1000,v=1,微分方程如下:
mx+(c1+c2)x+mg?sign(x)?[0.0209+0.0619exp[-( )0.7874]]+kx=kv0t+c1v0,
令x1=x,x2=x,则,x=x2,x1=x=x2,代入上式得
x2=- (c1+c2)x2+ --g?sign(x2)?[0.0209+0.0619exp[-( )0.7874]]
编写程序如下:
子程序1
Function dydt=ode(t,y)
m=40;c1=1;c2=10;g=9.8;k=1000;v=1;
dydt=zeros(2,1);
dydt(1)=y(2);
dydt(2)=(-1/m)*(c1+c2)*y(2)+(-c1+k*t)*(v/m)-(k/m)*y(1)+g*sign(y(2))*(0.0209+0.0619*exp(-(c2*(y(2))/(m*4.1987))^0.7874));
end
子程序2
function dxdt = ode1(t,x)
m=40;c1=1;c2=10;g=9.8;k=5000;v=1;
dxdt=zeros(2,1);
dxdt(1)=x(2);
dxdt(2)=(-1/m)*(c1+c2)*x(2)+(-c1+k*t)*(v/m)-(k/m)*x(1)+g*sign(x(2))*(0.0209+0.0619*exp(-(c2*(x(2))/(m*4.1987))^0.7874));
end
主程序
function[T,Y]=call_ode()
tspan=[0 30];
y1_0=0;
y2_0=0;
[T,Y]=ode15s(@ode,tspan,[y1_0 y2_0]);
plot(T,Y(:,2),’-’)
hold on
x1_0=0;
x2_0=0;
[T,X]=ode15s(@ode1,tspan,[y1_0 y2_0]);
plot(T,X(:,2),’r’)
hold on
line([0,30],[1,1],’linestyle’,’--’);
ylabel(‘v/um.us^-1’)
end
三、结论
本文主要论述了将Matlab软件应用于高等数学之微分方程的求解中,较传统的计算方法高效、准确,不仅起到快速有效地检验计算结果及理论联系实际的作用,而且便于对理、工科专业的深入学习与研究。
参考文献
[1]唐春明 王中兴 Matlab软件在高等数学教学中的应用[J].高等数学研究,2016,19,(1):120-123。
[2]原婷婷 数学软件在高等数学研究型教学中的应用[J].电子技术与软件工程,2017,(23):66-66。
[3]陈泽 占海明 详解MATLAB在科学计算中的应用[M].电子工业出版社,2011。
[4]王丽 刘永莉 李永军 等 二阶隐式微分方程周期边值问题的上下解与迭合度[J].高校应用数学学报,2013,28,(3):329-334。
论文作者:邵亚军 汪丫入
论文发表刊物:《教育学》2019年12月总第197期
论文发表时间:2019/10/30
标签:微分方程论文; 兰州论文; 隐式论文; 高等数学论文; 微分论文; 程序论文; 方程组论文; 《教育学》2019年12月总第197期论文;