矩阵的运算.doc_第1页
矩阵的运算.doc_第2页
矩阵的运算.doc_第3页
矩阵的运算.doc_第4页
矩阵的运算.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

第三节矩阵的基本运算3.1 加和减3.2矩阵乘法 3.2.1 矩阵的普通乘法 3.2.2 矩阵的Kronecker乘法3.3 矩阵除法3.4矩阵乘方3.5 矩阵的超越函数3.6数组运算 3.6.1数组的加和减 3.6.2数组的乘和除 3.6.3 数组乘方3.7 矩阵函数 3.7.1三角分解 3.7.2正交变换 3.7.3奇异值分解 3.7.4 特征值分解 3.7.5秩3.1 加和减如矩阵A和B的维数相同,则A+B与A-B表示矩阵A与B的和与差如果矩阵A和B的维数不匹配,Matlab会给出相应的错误提示信息如:A= B=1 2 3 1 4 74 5 6 2 5 87 8 0 3 6 0C =A+B返回:C = 2 6 10 6 10 14 10 14 0如果运算对象是个标量(即11矩阵),可和其它矩阵进行加减运算例如:x= -1 y=x-1= -20 -12 1 3.2矩阵乘法Matlab中的矩阵乘法有通常意义上的矩阵乘法,也有Kronecker乘法,以下分别介绍3.2.1 矩阵的普通乘法矩阵乘法用“ * ”符号表示,当A矩阵列数与B矩阵的行数相等时,二者可以进行乘法运算,否则是错误的计算方法和线性代数中所介绍的完全相同如:A=1 2 ; 3 4; B=5 6 ; 7 8; C=A*B,结果为C=即Matlab返回:C = 19 22 43 50如果A或B是标量,则A*B返回标量A(或B)乘上矩阵B(或A)的每一个元素所得的矩阵3.2.2 矩阵的Kronecker乘法 对nm阶矩阵A和pq阶矩阵B,A和B的Kronecher乘法运算可定义为: 由上面的式子可以看出,Kronecker乘积AB表示矩阵A的所有元素与B之间的乘积组合而成的较大的矩阵,BA则完全类似AB和BA均为npmq矩阵,但一般情况下ABBA和普通矩阵的乘法不同,Kronecker乘法并不要求两个被乘矩阵满足任何维数匹配方面的要求Kronecker乘法的Matlab命令为C=kron(A,B),例如给定两个矩阵A和B: A= B=则由以下命令可以求出A和B的Kronecker乘积C:A=1 2; 3 4; B=1 3 2; 2 4 6; C=kron(A,B)C = 1 3 2 2 6 4 2 4 6 4 8 12 3 9 6 4 12 8 6 12 18 8 16 24作为比较,可以计算B和A的Kronecker乘积D,可以看出C、D是不同的:A=1 2; 3 4; B=1 3 2; 2 4 6; D=kron(B,A)D = 1 2 3 6 2 4 3 4 9 12 6 8 2 4 4 8 6 12 6 8 12 16 18 24 3.3 矩阵除法在Matlab中有两种矩阵除法符号:“”即左除和“”即右除如果A矩阵是非奇异方阵,则AB是A的逆矩阵乘B,即inv(A)*B;而B/A是B乘A的逆矩阵,即B*inv(A)具体计算时可不用逆矩阵而直接计算通常:x=AB就是A*x=B的解;x=B/A就是x*A=B的解. 当B与A矩阵行数相等可进行左除如果A是方阵,用高斯消元法分解因数解方程:A*x(:, j)=B(:, j),式中的(:, j)表示B矩阵的第j列,返回的结果x具有与B矩阵相同的阶数,如果A是奇异矩阵将给出警告信息如果A矩阵不是方阵,可由以列为基准的Householder正交分解法分解,这种分解法可以解决在最小二乘法中的欠定方程或超定方程,结果是mn的x矩阵m是A矩阵的列数,n是B矩阵的列数每个矩阵的列向量最多有k个非零元素,k 是A的有效秩右除B/A可由B/A=(AB)左除来实现3.4矩阵乘方AP意思是A的P次方如果A是一个方阵,P是一个大于1的整数,则AP表示A的P次幂,即A自乘P次如果P不是整数,计算涉及到特征值和特征向量的问题,如已经求得:V,D=eig(A),则:AP=V*D.P/V(注:这里的.表示数组乘方,或点乘方,参见后面的有关介绍)如果B是方阵, a是标量,aB就是一个按特征值与特征向量的升幂排列的B次方程阵 如果a和B都是矩阵,则aB是错误的3.5 矩阵的超越函数在Matlab中解释exp(A)和sqrt(A)时曾涉及到级数运算,此运算定义在A的单个元素上 Matlab可以计算矩阵的超越函数,如矩阵指数、矩阵对数等一个超越函数可以作为矩阵函数来解释,例如将“m”加在函数名的后边而成expm(A)和sqrtm(A),当Matlab运行时,有下列三种函数定义:expm 矩阵指数logm 矩阵对数sqrtm 矩阵开方所列各项可以加在多种m文件中或使用funm请见应用库中sqrtm.m,1ogm.m,funm.m文件和命令手册3.6数组运算数组运算由线性代数的矩阵运算符“*”、“/”、“”、“”前加一点来表示,即为“.*”、“./”、“.”、“.”注意没有“.+”、“.-”运算3.6.1数组的加和减对于数组的加和减运算与矩阵运算相同,所以“+”、“-”既可被矩阵接受又可被数组接受3.6.2数组的乘和除数组的乘用符号.*表示,如果A与B矩阵具有相同阶数,则A.*B表示A和B单个元素之间的对应相乘例如 x=1 2 3; y= 4 5 6;计算z=x.*y结果z=4 10 18数组的左除(.)与数组的右除(./),由读者自行举例加以体会3.6.3 数组乘方数组乘方用符号.表示例如:键入:x= 1 2 3y= 4 5 6则z=x.y=14 25 36=1 32 729(1) 如指数是个标量,例如x.2,x同上,则:z=x.2=12 22 32= 1 4 9(2) 如底是标量,例如2 .x y ,x、y同上,则:z=2 .x y=21 22 23 24 25 26=2 4 8 16 32 64从此例可以看出Matlab算法的微妙特性,虽然看上去与其它乘方没什么不同,但在2和“”之间的空格很重要,如果不这样做,解释程序会把“”看成是2的小数点 Matlab看到符号“”时,就会当做矩阵的幂来运算,这种情况就会出错,因为指数矩阵不是方阵3.7 矩阵函数Matlab的数学能力大部分是从它的矩阵函数派生出来的,其中一部分装入Matlab本身处理中,它从外部的Matlab建立的M文件库中得到,还有一些由个别的用户为其自己的特殊的用途加进去的其它功能函数在求助程序或命令手册中都可找到手册中备有为Matlab提供数学基础的LINPACK和EISPACK软件包,提供了下面四种情况的分解函数或变换函数:(1)三角分解;(2)正交变换;(3) 特征值变换;(4)奇异值分解3.7.1三角分解最基本的分解为“LU”分解,矩阵分解为两个基本三角矩阵形成的方阵,三角矩阵有上三角矩阵和下三角矩阵计算算法用高斯变量消去法从lu函数中可以得到分解出的上三角与下三角矩阵,函数inv得到矩阵的逆矩阵,det得到矩阵的行列式解线性方程组的结果由方阵的“”和“/”矩阵除法来得到例如:A= 1 2 34 5 67 8 0LU分解,用Matlab的多重赋值语句L,U=lu(A)得出L =0.14291.000000.57140.50001.00001.000000U =7.00008.0000000.85713.0000004.5000注:L是下三角矩阵的置换,U是上三角矩阵的正交变换,分解作如下运算,检测计算结果只需计算L*U即可求逆由下式给出: x=inv(A)x =-1.77780.8889-0.11111.5556-0.77780.2222-0.11110.2222-0.1111从LU分解得到的行列式的值是精确的,d=det(U)*det(L)的值可由下式给出:d=det(A)d =27直接由三角分解计算行列式:d=det(L)*det(U)d =27.0000为什么两种d的显示格式不一样呢? 当Matlab做det(A)运算时,所有A的元素都是整数,所以结果为整数但是用LU分解计算d时,L、U的元素是实数,所以Matlab产生的d也是实数例如:线性联立方程取 b= 1 3 5解Ax=b方程,用Matlab矩阵除得到x=Ab结果x=0.33330.33330.0000由于A=L*U,所以x也可以有以下两个式子计算:y=Lb,x=Uy得到相同的x值,中间值y为:y =5.00000.28570.0000Matlab中与此相关的函数还有rcond、chol和rref其基本算法与LU分解密切相关chol函数对正定矩阵进行Cholesky分解,产生一个上三角矩阵,以使R*R=Xrref用具有部分主元的高斯约当消去法产生矩阵A的化简梯形形式虽然计算量很少,但它是很有趣的理论线性代数为了教学的要求,也包括在Matlab中3.7.2正交变换“QR”分解用于矩阵的正交三角分解它将矩阵分解为实正交矩阵或复酉矩阵与上三角矩阵的积,对方阵和长方阵都很有用例如A= 1 2 34 5 67 8 910 11 12是一个降秩矩阵,中间列是其它二列的平均,我们对它进行QR分解:Q,R=qr(A)Q =-0.0776-0.83310.54440.0605-0.3105-0.4512-0.77090.3251-0.5433-0.0694-0.0913-0.8317-0.77620.31240.31780.4461R =-12.8841-14.5916-16.29920-1.0413-2.0826000.0000000可以验证Q*R就是原来的A矩阵由R的下三角都给出0,并且R(3,3)=0.0000,说明矩阵R与原来矩阵A都不是满秩的下面尝试利用QR分解来求超定和降秩的线性方程组的解例如:b= 1357讨论线性方程组Ax=b,我们可以知道方程组是超定的,采用最小二乘法的最好结果是计算x=Ab结果为:Warning: Rank deficient, rank = 2 tol = 1.4594e-014x = 0.5000 0 0.1667我们得到了缺秩的警告用QR分解法计算此方程组分二个步骤:y=Q*bx=Ry求出的y值为y =-9.1586-0.34710.00000.0000x的结果为Warning: Rank deficient, rank = 2 tol = 1.4594e-014x = 0.5000 0 0.1667用A*x来验证计算结果,我们会发现在允许的误差范围内结果等于b这告诉我们虽然联立方程Ax=b是超定和降秩的,但两种求解方法的结果是一致的显然x向量的解有无穷多个,而“QR”分解仅仅找出了其中之一3.7.3奇异值分解在Matlab中三重赋值语句U,S,V=svd(A)在奇异值分解中产生三个因数:A=U*S*V U矩阵和V矩阵是正交矩阵,S矩阵是对角矩阵,svd(A)函数恰好返回S的对角元素,而且就是A的奇异值(其定义为:矩阵A*A的特征值的算术平方根)注意到A矩阵可以不是方的矩阵奇异值分解可被其它几种函数使用,包括广义逆矩阵pinv(A)、秩rank(A)、欧几里德矩阵范数norm(A,2)和条件数cond(A)3.7.4 特征值分解如果A是nn矩阵,若l满足Ax=lx,则称l为A的特征值,x为相应的特征向量函数eig(A)返回特征值列向量,如果A是实对称的,特征值为实数特征值也可能为复数,例如:A= 0 1-1 0eig(A)产生结果ans =0 + 1.0000i0 - 1.0000i如果还要求求出特征向量,则可以用eig(A)函数的第二个返回值得到:x,D=eig(A)D的对角元素是特征值x的列是相应的特征向量,以使A*x=x*D计算特征值的中间结果有两种形式:Hessenberg形式为hess(A),Schur形式为schur(A)schur形式用来计算矩阵的超越函数,诸如sqrtm(A)和logm(A)如果A和B是方阵,函数eig(A,B)返回一个包含一般特征值的向量来解方程Ax=lBx双赋值获得

温馨提示

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

评论

0/150

提交评论