第三章Matlab矩阵分析与处理矩阵是Matlab的基本特征,也是Matlab重要特性,它的运算功能丰富而方便,前一章介绍的矩阵的建立及基本运算,本章介绍矩阵分析与处理。3.1特殊矩阵Matlab中产生特殊矩阵的函数有:zeros:产生全0矩阵(零矩阵)ones:产生全1矩阵(幺矩阵)eye:产生单位矩阵rand:%产生0-1间均匀分布的随机矩阵;randn%产生均值为0,方差为1的标准正态分布随机矩阵调用格式:zeros(m):%产生m×m零矩阵;zreos(m,n):%产生m×n零矩阵;zreos(size(A)):%产生于矩阵A同样大小的零矩阵其它的几个函数的调用格式相似例:分别建立3×3,3×2,2×3零矩阵zeros(3)zeros(3,2)zeros(2,3)例:建立随机矩阵(1)在区间[20,50]内均匀分布的5阶矩阵(2)均值为0.6、方差为0.1的5阶正态分布随机矩阵解(1)z=20+(50-20)*rand(5)输出结果:z=48.503942.862938.463032.171221.736726.934233.694043.758148.064130.586038.205320.555147.654447.507144.395034.579544.642242.146232.308120.295846.739033.341125.288046.809524.1667解(2)y=0.6+sqrt(0.1)*randn(5)输出结果(略)3.2矩阵结构变换一、对角阵对角线上有非0元素的矩阵为对角阵,对角线上元素相等的对角阵称为数量矩阵,对角线上的元素全为1称为单位矩阵。(1)提取矩阵对角线元素A=[123;456];D=diag(A)diag(A)函数还有一种形式diag(A,k),可提取第k条对角线元素,主对角向上为1,向下为-1,类推。(2)构造对角矩阵diag([12-14])ans=1000020000-100004输出结果:diag(1:3,1)diag(1:3,-1)例:建立一个5×5矩阵,然后将第1行乘1第2行乘2,……A=[12345;678910;11121314151617181920;2122232425]d=diag(1:5)B=d*A二、三角阵三角阵又分上三角阵、下三角阵A=[713-28;2-98;0345]B=triu(A)triu(A,k)表示第k条对角线以上保留,其它置0A=[713-28;2-98;0345]tril(A)%取下三角tril(A,k)与triu(A,k)一样使用3.2.2矩阵的转置和旋转A=[713-28;2-98;0345]B=A'旋转A=[713-28;2-98;0345]B=rot90(A)转置格式:fliplr(A)%左右翻转flipud(A)%上下翻转3.3矩阵求逆于线性方程组求解为单位矩阵)IIABBA(称B为A矩阵的逆矩阵A=[713-28;2-98;0345]B=inv(A)C=A*B为单位矩阵)若IIAAAA(11故A与A-1是互逆的,满秩矩阵才可能互逆。二、用矩阵求逆的方法求解线性方程组线性方程组:nnnnnnnbxaxaxabxaxaxa1221111212111其矩阵表达式:bAxnnnnnnnnbbbxxxxaaaaaaaaaA2121212222111211b线性方程Ax=b的解bAx1例:用求逆矩阵的方法解线性方程组6278294532zyxzyxzyxMatlab程序:A=[123;149;1827];b=[5;-2;6];x=inv(A)*b输出结果:x=23.0000-14.50003.6667x=A\b也可用矩阵左除det(A)求A(方阵)行列式的值A=rand(5)B=det(A)三、矩阵的秩和迹求秩函数格式:rank(A):求矩阵A的秩1、矩阵的秩—矩阵线形无关的行或列数称为矩阵的秩。何谓矩阵线形无关的行或列?求迹函数格式:trace(A):求矩阵A的迹2、矩阵的迹—矩阵的迹为矩阵对角线元素之和,也为矩阵的特征值之和例如A=[223;45-6;789]trace(A)输出结果A=22345-6789ans=16四、向量和矩阵的范数向量的3种常用范数及其计算函数设向量V=(v1,v2,……,vn)(1)2-范数niivv122(2)1-范数niivv11(3)∞-范数inivv1max在Matlab中,求3种向量范数的函数分别为:①norm(v)或norm(v,2):计算向量v的2-范数②norm(v,1):计算向量v的1-范数③norm(v,inf):计算向量v的∞-范数例如:v1=norm(v,1)%v的1-范数v2=norm(v)%v的2-范数vinf=norm(v,inf)%v的∞-范数Matlab中,3种矩阵范数的函数分别为①norm(A,1):计算矩阵A的1-范数②norm(A):计算矩阵A的2-范数③norm(A,inf):计算矩阵A的∞-范数3.5矩阵的特征值与特征向量对于n阶方阵A,求数和向量,使得成立,满足等式的数称为A的特征值,而向量称为A的特征向量A0)(IA的非0解为特征向量和特征值在科学研究和工程计算中广泛应用,Matlab提供和了计算矩阵A的特征向量和特征值函数有3种:①E=eig(A):求矩阵A的全部特征值,构成向量E②[v,D]=eig(A):求矩阵A的全部特征值,构成对角阵,并求A的特征向量构成v的列向量③[v,D]=eig(A,‘nobalance’):与第二种类似,但第二种格式中线对A作相似变换后求矩阵的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。注:一个矩阵有无穷多个特征向量,而eig只求n个例如:A=[110.5;110.25;0.50.252];[v,D]=eig(A)输出结果:v=0.72120.44430.5315-0.68630.56210.4615-0.0937-0.69760.7103D=-0.01660001.48010002.5365例:用求特征值的方法解方程0182573245xxxx解题思路:先构造与方程对应的多项式的伴随矩阵A,在求A的特征值,A的特征值即为方程的根。P=[3-7052-18];A=compan(P)%求伴随矩阵x1=eig(A)方法1P=[3-7052-18];x2=roots(P)方法23.6矩阵的超越函数Matlab中的数学运算函数,如sqrt、exp、log等都是作用在矩阵个元素上例如:A=[42;36]B=sqrt(A)Matalb还提供了一些直接作用于矩阵的超越函数,这些函数名都在上述内部函数名之间之后缀以m,并规定输入参数必须是方阵1、矩阵平方根sqrtm(A)计算矩阵的平方根AA=[42;36]B=sqrtm(A)输出结果B=1.91710.46520.69782.3823若A为是对称正定矩阵,则一定能算出它的平方根。若A矩阵含有负的特征根,则sqrtm(A)将会的到一个复矩阵。A=[49;1625];X=eig(A)B=sqrtm(A)例如:输出结果:X=-1.445230.4452B=0.9421+0.9969i1.5572-0.3393i2.7683-0.6032i4.5756+0.2053i2、矩阵对数logm此函数的输入参数的条件与输出结果间的关系和函数sqrtm(A)完全一样A=[49;15]L=logm(A)L=1.06392.43080.27011.3340输出结果:3、矩阵指数expmexpm(A)的功能是求矩阵指数eA,expm函数与logm函数是互逆的。B=expm(L)输出结果:B=4.00009.00001.00005.00004、通用矩阵函数funmfunm(A,‘fun’)对矩阵A的计算由fun定义的函数矩阵的函数值。例如:A=[49;15]funm(A,'log')输出结果:ans=1.06392.43080.27011.3340例如:A=[1.06392.4308;0.27011.3340]funm(A,'exp')输出结果:ans=4.00009.00001.00005.0000