MATLAB在微分方程中的应用12级通信一班张丹丹1202301039摘要:MATLAB的强大功能也是大学的数学教育中是相当重视其学习重要性的原因之一。它能将运用者从繁杂的计算束缚中解救出来,把更多的精神投入到数学的基本含义的理解上,因此,它逐渐成为大学生们课程中的规范和重要工具。MATLAB在信息论、高等数学与代数中作图和教学中的应用,从而充分体现了MATLAB功能的强大,特别是绘图功能,矩阵运算,数值分析运算。借助MATLAB的运用,使学习者对数学的欣赏得以向群众普及,这对数学文明的传递具有重要意义。以下主要从数学中的解微分方程及其应用的角度来思考。关键字:MATLAB介绍解微分方程绘图应用一、MATLAB(一)MATLAB简介MATLAB(MatrixLaboratory,矩阵实验室)是MathWorks公司开发的,目前国际上最流行,应用最广泛的科学与工程计算软件。它集成二维和三维图形功能,已完成相应数值可视化的工作,并且提供了一种交互式的高级编程语言-M语言,利用M语言可以通过编写脚本或则函数文件实现用户自己的算法。MATLAB是目前发展最快的软件之一,其在多线程计算、视频图像算法等方面更加突出,能够从SymbolicmathToolbox中生成Simscape语言方程,SimulMATLABink中增加了SimulinkPLCCoder。(二)MATLAB的功能与特点MATLAB集科学与工程计算机、图形可视化、多媒体处理于一体,并提供了Windows图形界面设计方法。MATLAB语言有以下特点:1.起点高2.人机界面友好,编程效率高3.强大而智能化的作图功能4.智能化程度高5.Simulink动态仿真功能二.Matlab求解微分方程求微分方程(组)解析解的命令应用dsolve函数求解方程(‘方程1’,‘方程2’,…,‘方程n’,‘初始条件’,‘自变量’)例1求du/dt=1+u^2的通解.输入命令:dsolve('Du=1+u^2','t')结果:u=tg(t+c1)例2.求微分方程的特解.x’(t)=2x-3y+3zy’(y)=4x-5y+3zZ’(t)=4x-4y+2z输入命令:[x,y,z]=dsolve('Dx=2*x-3*y+3*z','Dy=4*x-5*y+3*z','Dz=4*x-4*y+2*z','t');x=simple(x)%将x化简y=simple(y)z=simple(z)结果为:x=(c1-c2+c3+c2e-3t-c3e-3t)e2ty=-c1e-4t+c2e-4t+c2e-3t-c3e-3t+c1-c2+c3)e2tz=(-c1e-4t+c2e-4t+c1-c2+c3)e2t三.应用MATLAB解微积分方程及其图形绘制在MATLAB中,使用函数可以把一个大的任务分解成比较小的任务,使得程序模块化,每个函数完成的定的功能,通过函数的调用完成整个过程。微积分课程中引入matlab软件,并力争与教学的相关内容进行有机结合。使malab作为一个重要工具,既能在数学课程的某些内容处理上发挥作用,也能为其它后续基础课程如《线性代数》《概率论与数理统计》《复变函数》等中涉及的微积分问题与matlab相结合。1.应用function函数来声明调用:以此来调用是M函数文件中必须有的,而且函数名应该与文件名一致。而且应用相关的流程控制结构和表达式实现。2.这里主要应用ode23,ode45求解非刚性标准形式的一阶常微分方程组的初值问题解的MATLAB常用程序.在解含n个未知数的方程组时,x0和x均为n维向量,M文件中的待解方程组应以x的分量形式写出.使用MATLAB软件求数值解时,高阶微分方程必须等价地变换成一阶微分方程组.例3解微分方程y1’=y2y3Y2’=-y1y3Y3’=-0.5y1y2Y1(0)=0,y(0)=1,y(3)=1解1)解题程序如下:functiondy=rigid(t,y)dy=zeros(3,1);dy(1)=y(2)*y(3);dy(2)=-y(1)*y(3);dy(3)=-0.51*y(1)*y(2);2)取t0=0,tf=12,输入命令:[T,Y]=ode45('rigid',[012],[011]);plot(T,Y(:,1),'-',T,Y(:,2),'*',T,Y(:,3),'+')3)结果如图(图中,y1的图形为实线,y2的图形为“*”线,y3的图形为“+”线)例4dx^2/dt^2-1000(1-x^2)dx/dt-x=0X(0)=2,x’(0)=01.解题程序如下:functiondy=vdp1000(t,y)dy=zeros(2,1);dy(1)=y(2);dy(2)=1000*(1-y(1)^2)*y(2)-y(1);2.取t0=0,tf=3000,输入命令:[T,Y]=ode15s('vdp1000',[03000],[20]);plot(T,Y(:,1),'-')3.结果如图050010001500200025003000-2.5-2-1.5-1-0.500.511.52三.MATLAB在实例中的应用例1、导弹追踪问题设位于坐标原点的甲舰向位于x轴上点A(1,0)处的乙舰发射导弹,导弹头始终对准乙舰.如果乙舰以最大的速度v0(是常数)沿平行于y轴的直线行驶,导弹的速度是5v0,求导弹运行的曲线方程.又乙舰行驶多远时,导弹将它击中?1.解题思路:假设导弹在t时刻的位置为P(x(t),y(t)),乙舰位于Q(1,v0t).由于导弹头始终对准乙舰,故此时直线PQ就是导弹的轨迹曲线弧OP在点P处的切线,即有y’=(v0t-y)/(1-x)即v0t=(1-x)y’+y024681012-1-0.8-0.6-0.4-0.200.20.40.60.812.又根据题意,弧OP的长度为AQ的5倍因此导弹运动轨迹的参数方程为:3.解导弹运动轨迹的参数方程x’(t)=5(1-x)((1-x)^2+(t-y)^2)^1/2y’(t)=5(t-y)((1-x)^2+(t-y)^2)^1/2x(0)=0,y(0)=0建立m-文件eq2.m如下:functiondy=eq2(t,y)dy=zeros(2,1);dy(1)=5*(1-y(1))/sqrt((1-y(1))^2+(t-y(2))^2);dy(2)=5*(t-y(2))/sqrt((1-y(1))^2+(t-y(2))^2);取t0=0,tf=2,建立主程序chase2.m如下:[t,y]=ode45('eq2',[02],[00]);Y=0:0.01:2;plot(1,Y,'-')holdonplot(y(:,1),y(:,2),'*')当x=1时y=5/24,即当乙舰航行到点(1,5/24)处时被导弹击中.被击中时间为:t=y/v0=5/24v0.若v0=1,则在t=0.21处被击中.4.轨迹图如下四、学习的心得通过十几周MATLAB学习过程中,涉及到很多数学模型,数学公式以及线性代数中一些概念问题,在老师的耐心指导下,加上通过讲解例题让我们更加的理解和应用MATLAB,在刚开始的过程中,我发现自己对MATLAB工具不能熟练,常常做到最后一个才走,但这更加坚定了我要好好学习专业课的决心,遇到不懂的问题,及时向老师求解。通过一学期的努力,无论在MATLAB这个软件的应用,还是高数、线性代数等知识点都有了明显的提高。尽管MATLAB的微积分的具体内容老师并没讲太多,但是由于我对其的兴趣,我自学了这方面知识,并且做出这份报告,我之所以有这样的能力,全应该感谢老师的不懈鼓励和栽培。以后也会更加努力将MATLAB应用于实际生活中。五、参考文献[1]姜启源,大学数学实验的MATLAB求解【M】.北京:清华大学出版,2005.8[2]陈阳泉,初等运用数学效果的MATLAB求解。北京大学清华出版社,2007.6[3]高等数学(第六版)上册同济大学数学系编[4]MATLAB实用教程(第三版)郑阿奇主编2006.9