精通 MATLAB5 816 357 492 X=A'B 151515 263826 417039 152847 153460 152843 315单位矩阵 MATLAB中的单位矩阵和数学上面的单位矩阵的含义稍有不同。在数学上,单位矩阵 为对角线元素为1、其余元素为0的方阵。而在 MATLAB中,单位矩阵也可为长方阵,其要 求是行数和列数相当的元素必须全为1,其余元素为0。在数学上单位矩阵般用大写字母 表示。在 MATLAB里,由于小写字母诺表示虚数单位,单位矩阵的产生函数用eye表示。 eye (3, 4) %产生3×4的长方形单位矩阵 l000 0100 0010 eye(4,3) %产生4×3的长方形单位矩阵 100 010 001 000 (4,4) %产生4×4的长方形单位矩阵。 1000 0100 00 0 0001
第三章 MATLAB的数值计算 31 316矩阵的 Kronecker乘积 如果X为mXn的矩阵,Y为p×q的矩阵,那么X和Y的 Kronecker乘积kron(x,Y 的维数大小为m×n。矩阵元素用下面分块矩阵描述 「X(1,1)*yX(12)*Y…X1.n)*y X(2,1)*YX(2,2)*Y X(2,n)*Y X(m,1)*yX(m,2)*Y Kronecker乘积经常使用零矩阵或单位矩阵,以形成更大的矩阵。下面举例说明 X=[1234] 2 I= eye(2) I=10 kron(X,m ans E kron, X) as= 200 0012 317线性方程组 解线性方程组在工程中有着极其广泛的应用。线性方程组的求解问题可以表述为:给 定两个矩阵A和B,求解满足方程AX=B或XA=B的矩阵x。 在线性方程的求解中,正斜杠/和反斜杠是两个很有表现力的字符。方程AX=B的解 用X=AB表示,方程XA=B的解用X=BA表示。平时常用的形式为前者。 假设方程AX=B中的矩阵A的维数大小为m×n,那么该方程的解可分为以下三类 m=n且矩阵A非奇异秩A等于n,求唯一解; 秩A不等于秩AB),求最小二乘解; ●m<n 秩A等于秩AB)且都小于n,解无实际意义
精通 MATLAB5 MATLAB把矩阵分为以下几种情况: A为三角矩阵或三角矩阵的某种变换; ●对称正定矩阵; 非奇异的方阵 长方阵,超定; 长方阵,欠定。 当系数矩阵A为各种不同情况时,反斜杠运算符会根据实际问题选取相应的解法。 超定方程组经常用在曲线拟合上,下面是一个曲线拟合的例子。 试验观测到六个时刻的y值如下 0003081.11.62.3 y0.820.720.630600.550.50 已知数据y为时间rt的衰减指数曲线,即y向量为单位列向量和衰减指数列向量的线 性组合,y()=c1+c2e'。试拟合出c1和c2 用下列命令形成两个列向量: t=[0381.11.62.3; y=[827263 先用命令E=[ones(size()exp(切)求出单位列向量和衰减指数列向量组成的矩阵E。 100100 1000.7408 10004493 1000.3329 1.000.2019 1000.1003 c的最小二乘解为c=Ey,求得c=04760,03413],所以拟合的曲线为 y(t)=04760+03413c2 318矩阵的逆和伪逆 如果矩阵A为方阵且非奇异,方程AX=【和XA=I的解称为矩阵A的逆,用A1表 示。函数inv可求矩阵的逆。函数de求矩阵的行列式。例如命令d=deA)和x=invA) 分别求矩阵A的行列式d和逆矩阵X。 如果忽略舍入误差,命令X=ivA)*B和命令X=AB应该得到相同的结果。但计算 时,应尽量使用后者,因为斜杠和反斜杠运算符的数值计算更准确,占用内存更小,算得 更快 当矩阵A为长方阵时,方程AX=I和XA=I至少有一个无解。这时矩阵的伪逆能在 某种程度上代表矩阵的逆。下面为求矩阵伪逆的例子 C=[9,4;28:;6,7
第三章 MATLAB的数值计算 X= 0.11590072900171 005340.115200418 Q=X C 可以验证X*C为单位矩阵 P=CKX %但矩阵P不是3×3的单位阵。 082930.19580.3213 0.19580.77540.3685 0.3213036850.3952 但P*C=C,xP=X,其性质类似单位矩阵。 319矩阵的LU、QR和 Cholesky分解 MATLAB解线性方程基于以下三种分解; ①对称、正定系数矩阵的 Cholesky分解; ②系数矩阵为普通方阵的 Gauss消去法 ③长方阵的正交分解 上述三种分解分别由chol、lu和qr函数完成。其中 Cholesky分解把矩阵分解为上三 角矩阵和其转置的乘积,数学表示为:A=RR,其中R为上三角矩阵。如果复数矩阵满足 Hemite正定,也有 Cholesky分解。下面求六阶paca矩阵的 Cholesky分解 A= pascal(6 36101521 15153570126 62156126252 R=chol(A) 121 5 00 000
精通 MATLAB5 可以验证,RR=A。 由于有了 Cholesky分解,当解方程Ax=b时,如果矩阵A对称正定, MATLAB会把 方程代换为R*R*x=b,然后按x=R(Rb)求解,计算速度将大大提高。 LU分解,又称Gaus消去法,可把任意方阵分解成下三角矩阵的基本变换形式(行交 换)和上三角矩阵的乘积。其数学表达式为:A=LU。其中L为下三角矩阵的基本变换形 式,U为上三角矩阵。下面为LU分解的例子。 A=[123:456;789 L u]=lu(a) 057140.50 0 700 085711.7143 矩阵的LU分解使得 MATLAB解系数矩阵为方阵的方程时,把方程Ax=b变为 x=UNUb),这样计算速度将会大大提高。事实上,在 MATLAB里,矩阵的求逆和求行列 式都是通过LU分解来实现的:de4)=det(L)*detU),invA)=inv(U)*invL)。 矩阵Q为实矩阵,且满足Q*Q=I,则把矩阵Q称为正交矩阵。QR分解能把任意长 方阵分解为正交矩阵和上三角矩阵的初等变换形式的乘积。比如把矩阵A进行如下分解: AP=QR,其中P为初等变换矩阵。下面为QR分解的例子 C=[94;2,8;6,7 [Q, R]=gr(c) Q -081820.3999 -0.4131 -018180861604739 054550.31260.7777 ll008.5455 74817 0 从上例可以看到,当矩阵为长方形时,R矩阵的末行元素全为0,当矩阵的纵横方向 上的元素个数相差较大时,R中的0元素将被压缩掉,Q中的相应的列也被压缩掉。这种 做法在大型复杂程序里很有用,不但可以节省磁盘空间,还能节省内存。 在QR分解中,初等变换矩阵P是可选的。当选用初等变换项时,矩阵对分解的奇异 性的检查更加严格 (,Rj=gr(C, 0) %进行QR分解