好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第三节矩阵的基本运算.docx

7页
  • 卖家[上传人]:琴****
  • 文档编号:19153045
  • 上传时间:2017-11-18
  • 文档格式:DOCX
  • 文档大小:39.15KB
  • / 7 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第三节 矩阵的基本运算§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 106 10 1410 14 0如果运算对象是个标量(即 1×1 矩阵),可和其它矩阵进行加减运算.例如: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=41× 85=8463432121=503219即 Matlab 返回:C =19 2243 50如果 A 或 B 是标量,则 A*B 返回标量 A(或 B)乘上矩阵 B(或 A)的每一个元素所得的矩阵.§3.2.2 矩阵的 Kronecker 乘法对 n×m 阶矩阵 A 和 p×q 阶矩阵 B,A 和 B 的 Kronecher 乘法运算可定义为:aaCnmnm..212112由上面的式子可以看出,Kronecker 乘积 AB 表示矩阵 A 的所有元素与 B 之间的乘积组合而成的较大的矩阵,B A 则完全类似.A B 和 B A 均为 np×mq 矩阵,但一般情况下 A BB A.和普通矩阵的乘法不同,Kronecker 乘法并不要求两个被乘矩阵满足任何维数匹配方面的要求.Kronecker 乘法的 Matlab 命令为 C=kron(A,B),例如给定两个矩阵 A 和 B:A=1234B=326则由以下命令可以求出 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 42 4 6 4 8 123 9 6 4 12 86 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 43 4 9 12 6 82 4 4 8 6 126 8 12 16 18 24 §3.3 矩阵除法在 Matlab 中有两种矩阵除法符号:“\”即左除和“/”即右除.如果 A 矩阵是非奇异方阵,则 A\B 是 A 的逆矩阵乘 B,即 inv(A)*B;而 B/A 是 B 乘 A 的逆矩阵,即B*inv(A).具体计算时可不用逆矩阵而直接计算.通常:x=A\B 就是 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 正交分解法分解,这种分解法可以解决在最小二乘法中的欠定方程或超定方程,结果是 m×n 的 x 矩阵.m 是 A 矩阵的列数,n 是 B 矩阵的列数.每个矩阵的列向量最多有 k 个非零元素,k 是 A 的有效秩.右除 B/A 可由 B/A=(A'\B')'左除来实现.§3.4 矩阵乘方A^P 意思是 A 的 P 次方.如果 A 是一个方阵,P 是一个大于 1 的整数,则 A^P 表示 A的 P 次幂,即 A 自乘 P 次.如果 P 不是整数,计算涉及到特征值和特征向量的问题,如已经求得:[V,D]=eig(A),则:A^P=V*D.^P/V(注:这里的.^表示数组乘方,或点乘方,参见后面的有关介绍)如果 B 是方阵, a 是标量,a^B 就是一个按特征值与特征向量的升幂排列的 B 次方程阵. 如果 a 和 B 都是矩阵,则 a^B 是错误的.§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 3]y=[ 4 5 6]则 z=x.^y=[1^4 2^5 3^6]=[1 32 729](1) 如指数是个标量,例如 x.^2,x 同上,则:z=x.^2=[1^2 2^2 3^2]=[ 1 4 9](2) 如底是标量,例如 2 .^[x y] ,x、y 同上,则:z=2 .^[x y]=[2^1 2^2 2^3 2^4 2^5 2^6]=[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 0]LU 分解,用 Matlab 的多重赋值语句[L,U]=lu(A)得出L =0.1429 1.0000 00.5714 0.5000 1.00001.0000 0 0U =7.0000 8.0000 00 0.8571 3.00000 0 4.5000注:L 是下三角矩阵的置换,U 是上三角矩阵的正交变换,分解作如下运算,检测计算结果只需计算 L*U 即可.求逆由下式给出: x=inv(A)x =-1.7778 0.8889 -0.11111.5556 -0.7778 0.2222-0.1111 0.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=[ 135]解 Ax=b 方程,用 Matlab 矩阵除得到x=A\b结果 x=0.33330.33330.0000由于 A=L*U,所以 x 也可以有以下两个式子计算:y=L\b,x=U\y.得到相同的 x 值,中间值 y 为:y =5.00000.28570.0000Matlab 中与此相关的函数还有 rcond、chol 和 rref.其基本算法与 LU 分解密切相关.chol 函数对正定矩阵进行 Cholesky 分解,产生一个上三角矩阵,以使 R'*R=X.rref 用具有部分主元的高斯-约当消去法产生矩阵 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.8331 0.5444 0.0605-0.3105 -0.4512 -0.7709 0.3251-0.5433 -0.0694 -0.0913 -0.8317-0.7762 0.3124 0.3178。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.