《MATLAB语言》课程论文基于MATLAB在数理方程的应用姓名:廖威学号:12010245212专业:通信工程班级:通信班指导老师:汤全武学院:物理电气信息学院完成日期:2011.12.121基于MATLAB在数理方程的应用(廖威120102452122010级通信班)[摘要]MATLAB是近几年传播最快、影响最大的数学类应用软件。应用MATLAB求解《数学物理方法》中的一些题目,使原来繁琐的手工计算变得简便,而且可将数理方程的解及一些特殊函数以图形的形式显示出来,形象、直观,便于理解。数理方程当中有许多的复杂的数值及数学符号的计算《数学物理方法》是许多理工专业的必修课和重要基础课,也是一门公认的难度大的课程。因课程内容抽象,数学推导繁琐,学生学习起来感到非常枯燥。MATLAB是高性能的数值计算型数学类科技应用软件,具有优秀的数值计算功能和强大的数据可视化能力。本文以一些典型习题为例,介绍了MATLAB在复变函数、积分变换、数理方程和特殊函数等方面的应用。[关键词]MATLAB积分变换数学物理方程特殊函数图形绘制一、问题的提出MATLAB是近几年传播最快、影响最大的数学类应用软件。应用MATLAB求解《数学物理方法》中的一些题目,使原来繁琐的手工计算变得简便,而且可将数理方程的解及一些特殊函数以图形的形式显示出来,形象、直观,便于理解。而且MATLAB强大的科学运算、灵活的程序设计、便捷的与其他程序和语言接口的功能,显示出其很强的优越性……二、MATLAB在解偏微分方程中的应用应用MATLAB求解数学物理方程,可通过编程或直接利用偏微分方程工具箱求解,直接利用偏微分方程工具箱更为简单、方便。在数理方程课上我们学习解矩形域方程的问题:例1:在矩形域-0.5x0.5,-0.5y0.5上求解Δu=-2,且u在边界上的值为零。利用偏微分方程工具箱求解过程如下:(1)启动偏微分方程求解界面。(2)在MATLAB命令窗口中键入pderect([-0.50.5-0.50.5]),选择Boundary→RemoveAllSubdomainBorders菜单项,得出偏微分方程的求解区域。(3)单击偏微分方程界面工具栏中的PDE图标,选择其中的Parabolic选项,将给定的偏微分方程的参数输入到该对话框中。(4)边界条件由Boundary菜单下的SpecifyBoundaryconditions确定,输入边界条件h=1,r=0。(5)单击工具栏等号按钮,得到偏微分的解,单击图形设置按钮,得出如图1所示的结果。MATLAB程序如下:clearall%泊松方程的解pderect([-0.50.5-0.50.5]);%微分方程的求解区域h1=1,r=0;%初始条件运行结果如图1所示。2图1泊松方程的解通过以上程序对求解方程使其为可视化,加深对问题的了解。现在我们来解决另一个问题。三、MATLAB在解特殊方程中的应用:例2.画出连带勒让德多项式(2阶)的曲线分布,MATLAB语句为:x=-1:0.01:1%求解范围plot(x,LEGENDRE(2,x))%sunlink挂函数语句,输出图形运行结果如图2所示。3图2连带勒让德多项式(2阶)的曲线分布例3:画出第一类贝塞尔函数J15(x)的曲线分布。MATLAB语句为:x=0:0.01:50%求解范围plot(x,BESSELJ(15,x))%函数语句,输出图形运行结果如图3所示。图3贝塞尔函数(15阶)J15(x)的曲线分布4以上只是我们用MATLAB解一些经典的数理方程,MATLAB在显示其强大的绘图和解方程上的优势。下面我们来看MATLAB在解实际应用方程的运用,先来看在解齐次波动方程。四、作出有界弦振动问题解析解的图形分布:02xxttuaulx00,00lxxuu(1))(),(00xuxuttt解析解:u=lxnlatnlatnnnnsin)sincos(1(取系数为1)(2)例4:n=1本振解随时间变化的图形分布。cleara=1;l=1;x=0:0.05:1;t=0:0.001:3;u=0;n=1;%函数参数[X,T]=meshgrid(x,t);%函数变量u=(cos(n*pi*a*T/l)+sin(n*pi*a*T/l)).*sin(n*pi*X/l)%函数定义式figure(1)axis([01-0.050.05])%图形取点,x分布mesh(X,T,u)title('n=1本振随时分布的透视图')%图像名xlabel('x')%图像坐标轴'x'ylabel('t')%图像坐标轴'y'zlabel('u')%图像坐标轴'u'运行结果如图4所示。'图4n=1本振解随时间变化的图形5例5:n=2本振解随时间变化的图形分布。cleara=1;l=1;x=0:0.05:1;t=0:0.001:3;u=0;n=2;%函数参数[X,T]=meshgrid(x,t);%函数变量u=(cos(n*pi*a*T/l)+sin(n*pi*a*T/l)).*sin(n*pi*X/l)%函数定义式figure(1)axis([01-0.050.05])%图形取点,x分布mesh(X,T,u)title('n=2本振随时分布的透视图')xlabel('x')%图像坐标轴'x'ylabel('t')%图像坐标轴'y'zlabel('u')%图像坐标轴'u'运行结果如图5所示。图5n=2本振解随时间变化的图形分布五、MATLAB在复变函数中的应用1、复数计算例6:求下列复数的实部、虚部、共轭复数、模与辐角。(1)(1+i)^6(2)i/(1+i)+(1-i)/i定义复数后,利用简单的MATLAB语句:real()、imag()、conj()、abs()、angle()可直接得出复数的的实部、虚部、共轭复数、模与辐角。解:a=[(1+i)^6i/(1+i)+(1-i)/i]%函数方程a=0-8.0000i-0.5000-0.5000i%函数化简real(a)%求实部ans=0-0.50006imag(a)%求虚部ans=-8.0000-0.5000conj(a)%求共轭复数ans=0+8.0000i-0.5000+0.5000iabs(a)%求复数的模ans=8.00000.7071angle(a)%求辐角ans=-1.5708-2.3562例7:求方程z3+8=0的所有的根。调用内部函数Solve进行求解。解:Solve(‘z^3+8=0’)%调用函数Solve求方程的根ans=-21+i*3^(1/2)1-i*3^(1/2)2、复变函数的图形绘制在复变函数的教学与研究中,对于复变函数的图形绘制往往繁冗复杂,仅凭手工很难画出来。MATLAB软件中自带了图像处理工具包,它是由一系列支持图像处理操作的函数组成的,它囊括了几乎所有主流的科学计算中所涉及的图像处理功能。借助MATLAB的绘图功能,可以快捷、准确地绘出图形,使教学变得形象、直观、生动,有利于学生观察图形的形状,掌握图形的性质。例8:绘制函数z3的图像。输入MATLAB语句如下:z=cplxgrid(20);%在复平面上面得到一个21*41的网格w=z.^3;%函数方程surf(real(z),imag(z),real(w),imag(w));%绘制三维曲线图title('z^3');%图像名运行结果如图6所示。7图6z3的图像例9:作出圆周│z│=3在映射ω=z+1./z下的像。编写相应的m文件yingshe.m为:symsxyzt%定义变量t=-pi:0.01:pi;%求解范围x=3*cos(t);%定义xy=3*sin(t);%定义yz=x+i*y;%复数z型式w=z+1./z;%函数方程subplot(2,1,1);%选择2×1个区中的1号区plot(z);%函数语句,输出图形title('z=3*cos(t)+i*sin(t)');%图像名axisequal%纵、横坐标轴采用等长刻度subplot(2,1,2);%选择2×1个区中的2号区plot(w);%函数语句,输出图形title('w=z+1./z')%图像名axisequal%纵、横坐标轴采用等长刻度运行结果如图7所示。8图7z=3在映射ω=z+z1下的像3、Taylor级数展开Taylor级数的展开可以用符号工具箱中的Taylor()函数直接导出。例10:将函数1/(1-z)^2在z=0处展成幂级数。解:symsz;%定义变量Taylor(1/(1-z)^2,0)%Taylor()函数直接导出ans=1+2*z+3*z^2+4*z^3+5*z^4+6*z^54、留数计算通过求极限的方法计算留数。例11:确定函数f(z)=z+2i/(z^5+4z^3)的极点,并求出函数在极点处的留数。解:通过对函数的分析,可知z=0是三阶极点,z=2i,-2i是单极点。symsz;%定义变量f=(z+2*i)/(z^5+4*z^3);%函数方程limit(diff(f*z^3,z,2)/prod(1:2),z,0)%求函数在极点0处的留数ans=-1/8*ilimit(f*(z-2i),z,2i)%求函数在极点2i处的留数ans=1/8*ilimit(f*(z+2i),z,-2i)%求函数在极点-2i处的留数9ans=0有理函数的部分分式展开。MATLAB语言中给出了现成的数值函数residue()求取有理函数的部分分式展开表示,该函数的调用格式为:[R,P,K]=residue(B,A)。返回留数、极点和两个多项式比值B(s)/A(s)的部分分式展开的直接项sssnnKPsRPsRPsR2211(3)向量B和A为分子、分母以s降幂排列的多项式系数,向量R是返回的留数,向量P是返回的极点,向量K由B(s)/A(s)的商的多项式系数组成,若length(B)<length(A),则K为空向量,否则,length(K)=length(B)-length(A)+1。如果存在m级极点则有P(j)=…=P(j+m-1),展开式包括以下形式:mjmjjjjjPsRPsRPsR)()(121(4)例12:计算函数f(z)=(z^2-4z+3)/(z^3+2z^2+z)的留数,并求其部分分式展开。在MATLAB窗口输入:B=[1-43];%向量BA=[121];%向量A[R,P,K]=residue(B,A);%函数调用[B,A1]=rat(R);[B,A1,P];ans=-21-1-81-1310结果表明:留数为Res[f(z),-1]=-2,Res[f(z),0]=3,部分分式展开为zzzfz3)1(81225、积分计算积分计算可以转化为留数计算,先求被积函数的留数,利用留数定理求复变函数的积分。例13:求c矣dz(z^2+1)(z^2+4)(其中C是逆时针方向的圆周:z=32)解:[R,P,K]=residue([1],[1,0,5,0,4])%函数调用R=%求被积函数的留数0+0.0833i0-0.0833i0-0.1667i0+0.1667i10P=%四个极点0+2.0000i0-2.0000i0+1.0000i0-1.0000iK=%(展开式中无此解析项)[]可见在圆周z=32内有四个极点,所以积分值S为:S=2*pi*i*sum(R)%计算出积分的值S=0利用MATLAB进行复数运算、级数。六、MATLAB在傅里叶变换的应用在MATLAB语言中使用fourier函数来实现Fourier变换。首先定义符号变量t描述时域表达式f,直接调用fourier函数就可求出所需的时域函数的Fourier变换式。该函数的调用格式为F=fourier(f)采用默认的t为时域变量F=fourier(f,u,v),用户指定时域变量u和频域变量v使用ifourier函数来实