MATLAB课程论文(设计)(____2014___届)论文设计题目:MATLAB在矩阵运算中的应用学院:数学与统计学院专业:数学与应用数学学号:201410700010姓名:唐一峰分数:目录第一章引言第二章Matlab矩阵运算简介第三章向量和矩阵的创建方法第四章Matlab矩阵运算优势第五章后记MATLAB在矩阵计算中的应用数学与应用数学专业201410700010唐一峰指导老师:胡志军关键词MATLAB矩阵第一章引言本个学期我们学习了matlab教程,这本书在更高层次上系统介绍matlab语言在高等应用数学的各个分支中的应用包含的应用数学分支为微积分、线性代数、积分变换和复变函数、非线性方程与最优化、常微分方程与偏微分方程、数据插值与函数逼近、概率论与数理统计以及新的非传统方法,MATLAB提供了一种全新的计算机编程语言,MATLAB中的数据元素是不需要指定维数的矩阵,因此解决同样的数值计算问题,使用MATLAB要比使用其他编程语言提高编程效率几倍。MATLAB对于问题的表达方式几乎与问题的数学表达形式完全一致,这大大降低了对使用者的计算机编程能力的要求,实践证明,普通大学生可以在短短几十分钟内完成一个数学编程,并且能够熟练掌握它,使得应用数学的科学研究与计算变得更高的效率、更富有创造性。本文仅仅以MATLAB在矩阵计算中的应用为主要研究对象,对于我们在高等代数课本中常见的矩阵进行比较系统全面的研究,矩阵几乎是整个数学的基础之一,因此,快速的对矩阵进行计算,无疑在某种程度上数学的发展,本文展示了部分常见的、特别的矩阵,展示了矩阵的结构计算,以此告诉大家,矩阵的庞大的计算不再是难题,掌握MATLAB就能面对一切复杂矩阵不再犯难。第二章MATLAB矩阵运算简介2.1矩阵的代数运算如果一个矩阵A有n行、m列元素,则称A矩阵为n*m矩阵;若n=m,则又称矩阵A为方阵。MATLAB语言中定义了下面各种矩阵的基本代数运算:○1矩阵转置在数学公式中一般把一个矩阵的转置记作AT,假设A矩阵为一个n*m矩阵,则其转置矩阵B的元素定义为b𝑗𝑖=𝑎𝑖𝑗,i=1,…,n,j=1,…,m,故B的为m*n矩阵。如果A矩阵含有复数元素,则对之进行转置时,其转置矩阵B的元素定义为𝑏𝑗𝑖=𝑎𝑖𝑗∗,i=1,…,m,亦即首先对各个元素进行转置,然后在逐项求取其共轭复数值。这种专制方式又称为Hermit转置,矩阵的转置则可以由A.’求出。例如:A=[1,2,3;4,5,6;7,8,9]那么B=A’则结果显示为B=147258369○2加减法运算假设在MATLAB工作环境下有两个矩阵A和B则可以由C=A+B和C=A-B命令执行矩阵加减法。若A和B的维数相同,它会自动的将A和B矩阵的元素相应的相加减,从而得出正确的结果,并赋给C变量。若两者之一为标量,则应该将其遍加(减)于另一个矩阵。在其他情况下,MATLAB将自动的给出错误信息,提示用户两个矩阵的维数不匹配。例如:A=[1,2,3;4,5,6;7,8,9]B=[1,4,7;2,5,8;3,6,9]则C=A+B的结果显示为C=261061014101418如果键入X=[-1,0,2]则y=x-1的结果为y=−2−11○3矩阵的乘法假设有两个矩阵A和B,其中A的列数与B矩阵的行数相同,或其一为标量,则称A,B矩阵是可乘的,或称A和B矩阵的维数是相容的。假设A为n*m矩阵,而B为m*r矩阵,则C=AB为n*r矩阵,其各个元素为𝑐𝑖𝑗=∑𝑎𝑖𝑘𝑏𝑘𝑗𝑚𝑘=1,其中i=1,2,…,n,j=1,2,…r。MATLAB语言中两个矩阵的乘法由C=A*B直接求出,且这里并不需要指出A和B矩阵的维数。如果A和B矩阵的维数相容,则可以准确无误地获得乘积矩阵C;如果二者的维数不相容则将给出错误信息,通知用户两个矩阵是不可乘的。例如:当左乘矩阵的列数等于右乘矩阵的行数时,两矩阵可以进行乘法,在MATLAB中,矩阵A乘以矩阵B应表示成A*B.X=−102Y=−2−11则X’*Y的结果显示为4,而X*Y’的结果显示为X*Y’=21−1000−4−22数乘矩阵运算,就是用数乘以矩阵的每一个元素,例如:Y=pi*X或Y=X*pi,其结果为Y=−3.14160.00006.2832○4矩阵的左除和右除MATLAB中用“\”运算符号表示两个矩阵的左除,A\B为方程AX=B的解X,若A为非奇异方程,则X=𝐴−1B。如果A矩阵不是方阵,也可以求出A\B,这时将使用最小二乘解法求取AX=B中的X矩阵。同理,MATLAB中定义了“/”,用于表示两个矩阵的右除,相当于求方程XA=B的解。A为非奇异方程时B/A为B𝐴−1,但在计算中方法上存在差异,更精确的有B/A=(A’\B’)’。例如:求解以下非齐次线性方程组{2𝑥1+𝑥2−5𝑥3+𝑥4=8𝑥1−3𝑥2−6𝑥4=9𝑥1+4𝑥2−7𝑥3+6𝑥4=0在MATLAB命令空间中,分别输入系数矩阵,右端列向量A=[2,1,-5,1;1,-3,0,-6;0,2,-1,2;4,-7,6]B=[8;9;-5;0]键入命令det(A),可得到系数矩阵的行列式值为27,故系数矩阵A非奇异,方程组有唯一解;再键入命令x=A\b,其结果显示为X=3.0000−4.0000−1.00001.00002.2矩阵的逻辑运算在MATLAB语言中,如果一个数的值为0,则可以认为它为逻辑0,否则为逻辑1。MATLAB提供了3种逻辑运算符:&、|、~。假设矩阵A和矩阵B均为n*m矩阵,则在MATLAB下定义了如下逻辑运算法则:○1在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。○2设参与逻辑运算的是两个标量a和b,那么a&ba,b全为非零时,运算结果为1,否则为0.a|ba,b中只要有一个非零时,运算结果为1;只有当a,b全为零时,运算结果为零。~a当a为零时,运算结果为1;当0非零时,运算结果为0。○3若参加逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由0或1组成。○4若参与逻辑运算的一个是标量一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行,最终运算结果是一个与矩阵同维的矩阵,其元素是由0或1组成。○5若对一个矩阵做逻辑非运算,那么将对矩阵中的每个元素按标量规则逐个取逻辑非,最终运算的结果是一个与元矩阵同维的矩阵,其元素由0或1组成。○6在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。例如:若键入A=[0,2,3;0,2,0];B=[0,0,0;2,3,4];A&BA|B~A则其结果分别为ans=000010ans=011111ans=1001012.3矩阵的比较运算MATLAB语言定义了各种比较关系,如C=AB,当A和B矩阵满足𝑎𝑖𝑗𝑏𝑖𝑗时,𝑐𝑖𝑗=1,否则𝑐𝑖𝑗=0。MATLAB语音还支持等于关系,用==表示,大于等于关系,用=关系,还支持不等于~=关系,其意义是很明显的可以直接使用。MATLAB还提供了一些特殊的函数,在编程中也是很实用的。其中,find()函数可以查询出满足某关系的数组下标。例如,若想查出矩阵C中数值等于1的元素下表,则可以给出find(C==1)命令如下:A=[1,2,3;4,5,6;7,80];%输入实数矩阵Find(A=5)’%找出矩阵元素大于等于5的下标ans=3568可以看出,该函数相当于先将A矩阵按列构成列向量,然后再判断哪些元素大于或等于5,返回其下标。而find(isnan(A))函数将查出A变量中为NaN的个元素下标还可以用下面的个事同时返回行和列坐标。[i,j]=find(A=5);[I,j]ans=31223223此外,all()和any()函数也是很实用的查询函数。all(A=5)ans=000any(A=5)ans=1111前一个命令当A矩阵的某列元素全等于5时,相应元素为1,否则为0.二后者在某列中含有大于或等于5时,相应元素为1,否则为0.第三章矩阵的创建方法MATLAB软件提供了强大的矩阵运算和数组运算的功能,主要进行数字矩阵的运算,矩阵可以用以下几种不同方式输入到MATLAB:○1直接列出矩阵元素○2通过程序产生○3建立M文件○4从外部数据文件中装入,例如:输入矩阵A=123456789在MATLAB命令空间中,通过键盘输入A=[1,2,3;4,5,6;7,8,9]当按下Enter键时,屏幕上就会显示出结果:A=123456789这里,矩阵各行中的元素用逗号分隔,各行之间再用分号分隔。在MATLAB命令空间中,可以通过编程来输入矩阵,单击菜单命令file→new→m→file,进入MATLAB程序编辑器,输入以下程序代码并将程序以命名字prog1_1.m存盘。Fori=1:1:3Forj=1:1:3A(I,j)=(i-1)*3+j;EndA在MATLAB命令空间中,只要输入prog1_1,按下Enter键后,屏幕上也会显示出矩阵A。当然也可以通过程序编辑器为需要输入的矩阵建立一个M文件,对于上述矩阵,可输入程序代码A=[1,2,3;4,5,6;7,8,9]仍以文件名prog1_1.m存盘。当在命令窗口中键入prog1_1,按下Eenter键后,屏幕上也会显示出矩阵A,对于一些大型的、数据无规律的矩阵的输入,通常采用这样的方法。MATLAB中有一种扩展名为mat的文件,它是一种外部数据的文件,这类文件可使用load命令将它装载到MATLAB命令空间。第四章MATLAB矩阵运算的优势MATLA语言是当前国际上自动控制领域的首选计算机语言,也是很多理工科专业最适合的计算机数学语言。掌握该语言不但有助于更深入理解和掌握数学问题的求解思想,提高求解数学问题的能力,而且还可以充分利用该语言,在其他专业课程的学习中得到积极的帮助。和其他程序相比,MATLAB具有如下优势:○1简洁高效性MATLAB程序设计语言集成度高,语句简介,往往用C++等高等语言编写的数百条语句,用MATLAB语言一条语句就能解决问题,其程序可靠性高、易于维护,可以大大提高解决问题的效率和水平。○2科学运算功能MATLAB语言以矩阵为基本单位,可以直接作用于矩阵运算。另外,最优化问题、数值积分问题、微分方程值解问题、数据处理问题等都能直接用MATLAB语言求解。○3绘图功能MATLAB语言可以用最直观的语句将实验数据或计算结果用图形的方法显示出来,并可以将以往难以显示出来的隐函数直接用曲线绘制出来。MATLAB语言还允许用户用科室的方式编写图形用户界面,这使得用户可以容易的利用该语言编写通用程序。○4庞大的工具箱与模块集MATLAB是被控制界的学者“捧红”的,是控制界通用的计算机语言,在应用数学及控制领域几乎所有的研究方向均有自己的工具箱,而且由领域内知名专家编写,可信度比较高。随着MATLAB的日益普及,在其他工程领域也出现了工具箱,这也大大促进了MATLAB语言在各个领域的应用。○5强大的动态系统仿真功能Simulink提供的面向框图的仿真及其概念性仿真功能,使得用户能容易的建立复杂系统模型,准确的对其进行仿真分析。Simulin的概念性方阵模块集允许用户在一个框架下对其含有控制环节、机械环节和电子、电机环节的机电一体化系统进行建模与仿真,这是目前其他计算机语言无法作到的。后记本文针对MATLAB矩阵运算进行了简要的分析,参考了《MATLAB语言与数学实验》作者江世宏科学出版社,《高等应用数学问题的MATLAB求解》作者薛定宇、陈阳泉清华大学出版社,《MATLAB教程》作者张志涌、杨祖樱北京航空航天大学出版社,文中还有许多的不足之处,限于篇幅,以后还能加以补充,MATLAB矩阵计算的方法和操作也还有许多上升的空间,严谨程度还需要提升,希望老师给出合理的意见。