MATLAB-simulink的数值运算.ppt_第1页
MATLAB-simulink的数值运算.ppt_第2页
MATLAB-simulink的数值运算.ppt_第3页
MATLAB-simulink的数值运算.ppt_第4页
MATLAB-simulink的数值运算.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,1.5MATLAB的数值运算,MATLAB具有强大的数值能力,它不仅能对矩阵和向量进行相应的运算,而且也可处理多项式的解、数据分析、函数的极值、线性方程组的解、函数的微积分和函数绘图等问题。,2,1.5.1矩阵运算,MATLAB的基本数据单元是不需要指定维数的复数矩阵,它提供了各种矩阵的运算与操作,因它既可以对矩阵整体地进行处理,也可以对矩阵的某个或某些元素进行单独地处理,所以在MATLAB环境下矩阵的操作同数的操作一样简单。,3,1.矩阵的实现,在MATLAB语言中不必描述矩阵的维数和类型,它们是由输入的格式和内容来确定的,例如当A12时,把A当作一个2维行向量;A5时,把A当作一个标量;A12i时,把A当作一个复数。,4,矩阵可以用以下几种方式进行赋值:直接列出元素的形式;通过语句和函数产生;建立在文件中;从外部的数据文件中装入。,(1)矩阵的赋值,5,对于比较小的简单矩阵可以使用直接排列的形式输入,把矩阵的元素直接排列到方括号中,每行内的元素间用空格或逗号分开,行与行的内容用分号隔开。例如,矩阵在MATLAB下的输入方式为A=1,2,3;4,5,6;7,8,9或A=123;456;789,简单矩阵的输入,6,简单矩阵的输入,对于比较大的矩阵,可以用回车键代替分号,对每一行的内容分行输入,也可利用续行符号(),把一行的内容分两行来输入。例如,A=123;456789或A=123;456;789输入后A矩阵将一直保存在工作空间中,除非被替代和清除,在MATLAB的命令窗口中可随时查看其内容。,7,利用语句或函数产生矩阵,在MATLAB中,矩阵也可利用下面的语句来产生:s1:s2:s3其中,s1为起始值;s3为终止值;s2为步矩。使用这样的命令就可以产生一个由s1开始,以步距s2自增,并终止于s3的行向量。,8,利用语句或函数产生矩阵,例如:y=0:pi/4:pi结果显示:y=00.78541.57082.35623.1416如果S2省略,则可以认为自增步距为1,例如x=1:5结果显示:x=12345,9,利用语句或函数产生矩阵,利用size()函数可测取一个矩阵的维数,该函数的调用格式为n,m=size(A)其中:A为要测试的矩阵名,而返回的两个参数n和m分别为A矩阵的行数和列数。,10,利用语句或函数产生矩阵,当要测试的变量是一个向量时,当然仍可由size()函数来得出其大小,更简洁地,用户可以使用length()函数来求出,该函数的调用格式为n=length(x)其中,x为要测试的向量名,而返回的n为向量x的元素个数。如果对一个矩阵A用length(A)函数测试,则返回该矩阵行、列的最大值,即该函数等效于max(size(A)。,11,(2)矩阵的元素,MATLAB的矩阵元素可用任何表达式来描述,它既可以是实数,也可以是复数,例如B=-1/31.3;sqrt(3)(1+2+3)*i结果显示:B-0.33331.30001.73210+6.0000i,12,矩阵的元素,MATLAB允许把矩阵作为元素来建立新的矩阵,例如,利用A矩阵通过下面的语句C=A;10,11,12结果显示:C=123456789101112,13,矩阵的元素,MATLAB还允许对一个矩阵的单个元素进行赋值和操作,例如如果想将A矩阵的第2行第3列的元素赋为100,则可通过下面的语句来完成A(2,3)=100结果显示:A=12345100789这时将只改变此元素的值,而不影响其它元素的值。,14,矩阵的元素,如果给出的行数或列数大于原来矩阵的范围,则MATLAB将自动扩展原来的矩阵,并将扩展后未赋值的矩阵元素置为0。例如如果想把矩阵A的第4行第5列元素的值定义为8,就可以通过下面语句来完成。A(4,5)=8结果显示:A=1230045100007890000008,15,矩阵的元素,MATLAB还允许对子矩阵进行定义和处理。例如:A(1:3,1:2:5)%取A矩阵的第1行到第3行内,且位于第1,2,5列上的所有元素构成的子矩阵A(2:3,:)%取A矩阵的第2行和第3行所有元素构成的子矩阵,16,(3)特殊矩阵的实现,在MATLAB中特殊矩阵可以利用函数来建立。(1)单位矩阵函数eye()基本格式:Aeye(n)产生一个n阶的单位矩阵AAeye(size(B)产生与B矩阵同阶的单位矩阵A如:A=eye(5),17,特殊矩阵的实现,(2)零矩阵函数zeros()(3)1矩阵函数ones()(4)随机元素矩阵函数rand()(5)对角矩阵函数diag()(6)伴随矩阵函数compan()(7)上三角矩阵函数triu()和下三角矩阵函数tril(),18,2.矩阵的基本运算,矩阵运算是MATLAB的基础,MATLAB的矩阵运算功能十分强大,并且运算的形式和一般的数学表示十分相似。,19,(1)矩阵的转置,矩阵转置的运算符为“”。例如A=123;456;B=A结果显示:B=142536,20,矩阵的转置,如果是复数的矩阵,则转置()将同时对复数进行共轭处理,而(.)则只是将其排列形式进行转置。例:b=1+2i2-7ib=1.0000-2.0000i2.0000+7.0000ib=1+2i2-7i.b=1.0000+2.0000i2.0000-7.0000i,21,(2)矩阵的加和减,矩阵的加减法的运算符为“”和“”。矩阵只有同阶方可进行加减运算,标量可以和矩阵进行加减运算但应对矩阵的每个元素施加运算。例如A=123;456;B=A+1B=234567,22,(3)矩阵的乘法,矩阵的乘法运算符为“*”。当两个矩阵中前一矩阵的列数和后一矩阵的行数相同时,可以进行乘法运算,这与数学上的形式是一致的。例如:CA*B;在MATLAB中还可进行矩阵和标量相乘,其结果为标量与矩阵中的每个元素分别相乘。,23,(4)矩阵的除法,矩阵的除法有两种运算符“”和“/”,分别表示左除和右除。一般地讲,x=AB是A*x=B的解,x=B/A是x*A=B的解,通常ABB/A,而AB=inv(A)*B,B/A=B*inv(A),24,(5)矩阵的乘方,矩阵的乘方运算符为“”。一个方阵的乘方运算可以用AP来表示。P为正整数,则A的P次幂即为A矩阵自乘P次。如果P为负整数,则可以将A自乘P次,然后对结果进行求逆运算,就可得出该乘方结果。如果P是一个分数,例如Pnm,其中n和m均为整数,则首先应该将A矩阵自乘n次,然后对结果再开m次方。,25,(6)矩阵的翻转,MATLAB还提供了一些矩阵翻转处理的特殊命令,对nm维矩阵A,如B=fliplr(A)%将矩阵A进行左右翻转再赋给B,即bijai,m+1-j,C=flipud(A)%将矩阵A进行上下翻转再赋给C,即cijan+1-i,j,D=rot90(A)%将矩阵A逆时针进行旋转90度后赋给D,即dijaj,m+1-i。,26,(7)矩阵的超越函数,MATLAB中exp(),sqrt(),sin(),cos()等基本函数命令可以直接使用在矩阵上,这种运算只定义在矩阵的单个元素上,即分别对矩阵的每个元素进行运算。超越数学函数,可以在函数后加上m而成为矩阵的超越函数,例如expm(A),sqrtm(A),logm(A)分别为矩阵指数、矩阵开方和矩阵对数。矩阵的超越函数要求运算的矩阵必须为方阵。,27,3.矩阵的特殊运算,(1)矩阵行列式和矩阵求逆求逆:inv(A)求行列式:det(A)要求矩阵必须为方阵。,a=123;456;235;b=inv(a)b=-2.33330.33331.00002.66670.3333-2.0000-0.6667-0.33331.0000det(a)ans=-3,28,(2)矩阵的迹假设一个方阵为Aaij,i,j=1,2,n;则矩阵A的迹定义为即矩阵的迹为该矩阵对角线上各个元素之和。由代数理论可知矩阵的迹和该矩阵的特征值之和是相同的。在MATLAB中提供了求取矩阵迹的函数trace(),其调用方法为trace(A),29,(3)矩阵的秩对于nm维的矩阵A,若矩阵所有的列向量中共有rc个线性无关,则称矩阵的列秩为rc,如果rc=m,则称A为列满秩矩阵;相应地,若矩阵A的行向量中有rr个是线性无关的,则称矩阵A的行秩为rr,如果rrn,则称A为行满秩矩阵。MATLAB提供了一个内部函数rank()来用数值方法求取一个已知矩阵的秩,其调用格式为k=rank(A),30,(4)矩阵的三角分解矩阵的三角分解又称为LU分解,它的目的是将一个矩阵A分解成一个下三角矩阵L和一个上三角矩阵U的乘积,亦即可以写成ALU。在MATLAB下也给出了矩阵的LU分解函数lu(),该函数的调用格式为L,U=lu(A),31,(5)矩阵的特征值与特征向量V,D=eig(A)其中:A为要处理的矩阵,D为一个对角矩阵,其对角线上的元素为矩阵A的特征值,而每个特征值对应的V矩阵的列为该特征值的特征向量。该矩阵是一个满秩矩阵,它满足AVVD,且每个特征向量各元素的平方和均为1。如果调用该函数时只返回一个变量D,则D为A的特征值。,32,(6)矩阵的特征多项式、特征方程和特征根MATLAB提供了求取矩阵特征多项式系数的函数poly(),其调用格式为P=poly(A)其中:A为给定的矩阵,返回值P为一个行向量,其各个分量为矩阵A的降幂排列的特征多项式系数。即P=a0a1an,33,MATLAB语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。f(x)=a0 xn+a1xn-1+an-1x+an可用行向量p=a0a1an-1an表示。poly(A)1、产生A矩阵特征多项式系数向量;2、求根向量A对应的多项式。特征多项式一定是n+1维的特征多项式第一个元素一定是1,34,例:a=123;456;780;p=poly(a)p=1.00-6.00-72.00-27.00p是多项式p(x)=x3-6x2-72x-27的MATLAB描述方法,我们可用函数文件,显示数学多项式的形式:p1=poly2sym(p)p1=x3-6*x2-72*x-27,35,MATLAB中根据矩阵特征多项式求特征根的函数为roots(),其调用格式为V=roots(P)其中:P为特征多项式的系数向量,而V为特征多项式的解,即原始矩阵的特征根。,36,例:a=123;456;780;p=poly(a)p=1.00-6.00-72.00-27.00r=roots(p)r=12.1229-5.7345-0.3884显然,r是矩阵a的特征值,37,当然我们可用poly令其返回多项式形式p2=poly(r)p2=1.00-6.00-72.00-27.00MATLAB规定多项式系数向量用行向量表示,一组根用列向量表示。,38,1.5.2向量运算,虽然在MATLAB中向量和矩阵在形式上有很多的一致性,但它们实际上遵循着不同的运算规则。MATLAB向量运算符由矩阵运算符前面加一点“.”来表示,如“.*”、“./”和“.”等。,39,1.向量的加减,向量的加、减运算与矩阵的运算相同,所以“”和“”既可被向量接收又可被矩阵接收。,40,2.向量的乘法向量乘法的操作符为“.*”。如果x,y两向量具有相同的维数,则x.*y表示x和y单个对应元素之间的对应相乘。例如x=123;y=456;z=x.*yz=41018可见向量的输入和输出与矩阵具有相同的格式,但它们的运算规则不同,例如,如果x是一个向量,则求取函数x平方时不能直接写成x*x,而必须写成x.*x,否则将给出错误信息。,41,但是对于矩阵可以使用向量运算符号,这时实际上就相当于把矩阵看成了向量进行运算。例如对于两个维数相同的A,B矩阵,CA.*B表示A和B矩阵的相应元素之间直接进行乘法运算,然后将结果赋给C矩阵,把这种运算称为矩阵的点积运算,两个矩阵之间的点积是它们对应元素的直接运算,它与矩阵的乘法是不同的。例如A=123;456;789;B=234;567;890;C=A.*BC=261220304256720,42,3.向量的除法向量除法的操作符为“./”或“.”。它们的运算结果一样。例如对前面给出的x和y向量x=123;y=456;z=y./xz=4.00002.50002.0000,43,对于向量x.y和y./x一样,将得到相同的结果,这与矩阵的左除、右除是不一样的,因向量的运算是它们对应元素间的运算。对于矩阵也可使用向量的除法操作符,这时就相当于把矩阵看成向量进行运算。,44,4.向量的乘方向量乘方的运算符为“.”。向量的乘方是对应元素的乘方,在这种底与指数均为向量的情况下,要求它们的维数必须相同。例如x=123;y=456;z=x.yz=132729它相当于z=123.456=142536,45,1.5.3关系和逻辑运算,1关系运算MATLAB常用的关系操作符见表1-8表示。MATLAB的关系操作符可以用来比较两个大小相同的矩阵,或者比较一个矩阵和一个标量。如果给定的关系成立,则操作结果为逻辑真(1),否则操作结果为逻辑假(0)。,46,表1-8关系运算符,47,函数find()在关系运算中很有用,它可以在矩阵中找出一些满足一定关系的数据元素。例如A=1:9;B=A4B=000011111C=A(A4)C=56789或C=find(A4)C=56789,find功能:查找非零元素的值。格式:k=find(X),48,2.逻辑运算,MATLAB的逻辑操作符有(与)、|(或)和(非)。它们通常用于元素或01矩阵的逻辑运算。与运算符和或运算符可比较两个标量或两个同阶矩阵,对于矩阵,逻辑运算符是作用于矩阵中的元素。逻辑运算结果信息也用“0”和“1”表示,逻辑操作符认定任何非零元素都表示为真。给出1为真,0为假。,49,非是一元操作符,当A非零时,A返回的信息为0,当A为零时,A返回信息为1。因而就有:P|(P)返回值为1,P(P)返回值为0。例A=1:9;C=(A4)C=111100000C=(A4)f=poly2str(p,x)结果显示:f=x4+5x3+3x+2,53,2多项式的四则运算多项式的四则运算主要是多项式的加、减、乘和除运算。其中多项式的加、减运算要求两个相加、减多项式的系数向量维数的大小必须相等。(1)多项式的加减例1-11求以下两个多项式的和。f1(x)=x4+5x3+3x+2,f2(x)=x2+6x+5解:MATLAB命令如下p1=15032;p2=00165;p=p1+p2p=15197,54,(2)多项式的乘法在MATLAB中,多项式的乘法运算,利用函数conv()来实现,函数conv()相等于执行两个数组的卷积,其调用格式为p=conv(p1,p2)上例中:p1=15032;p2=165;p=conv(p1,p2)p=1113528202710,55,(3)多项式的除法在MATLAB中,多项

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论