数学实验向量与矩阵运算主要内容Matlab能处理数、向量和矩阵.数实际上是一个1×1维矩阵.这节的主要内容:矩阵的生成、操作;矩阵的基本运算;矩阵的函数.向量与矩阵的生成一向量与矩阵运算向量的生成直接输入:a=[1,2,3,4]冒号运算符a=[1:4]==a=[1,2,3,4]b=[0:pi/3:pi]==b=[0,1.0472,2.0944,3.1416]c=[6:-2:0]==c=[6,4,2,0]例:从矩阵中抽取行或列向量与矩阵的生成(续)向量与矩阵运算矩阵的生成直接输入:A=[1,2,3;4,5,6;7,8,9]由向量生成由函数生成通过编写m文件生成例:x=[1,2,3];y=[2,3,4];A=[x,y],B=[x;y]例:C=magic(3)自动动手1、使用函数生成8×10零矩阵、5×5元素都为1的矩阵、5×5单位矩阵、4×4魔术方阵。常见矩阵生成函数zeros(m,n)生成一个m行n列的零矩阵,m=n时可简写为zeros(n)ones(m,n)生成一个m行n列的元素全为1的矩阵,m=n时可写为ones(n)eye(m,n)生成一个主对角线全为1的m行n列矩阵,m=n时可简写为eye(n),即为n维单位矩阵diag(X)若X是矩阵,则diag(X)为X的主对角线向量若X是向量,diag(X)产生以X为主对角线的对角矩阵tril(A)提取一个矩阵的下三角部分triu(A)提取一个矩阵的上三角部分rand(m,n)产生0~1间均匀分布的随机矩阵m=n时简写为rand(n)randn(m,n)产生均值为0,方差为1的标准正态分布随机矩阵m=n时简写为randn(n)矩阵操作提取矩阵的部分元素:冒号运算符A(:)A的所有元素A(:,:)二维矩阵A的所有元素A(:,k)A的第k列,A(k,:)A的第k行A(k:m)A的第k到第m个元素A(:,k:m)A的第k到第m列组成的子矩阵A(:)与A(:,:)的区别?如何获得由A的第一、三行和第一、二列组成的子矩阵?自己动手矩阵操作矩阵的旋转fliplr(A)左右旋转flipud(A)上下旋转rot90(A)逆时针旋转90度;rot90(A,k)逆时针旋转k×90度例:A=[123;456]B=fliplr(A)C=flipud(A)D=rot90(A),E=rot90(A,-1)矩阵操作矩阵的转置与共轭转置’共轭转置.’转置,矩阵元素不取共轭例:A=[12;2i3i](动手验证)B=A’C=A.’点与单引号之间不能有空格!矩阵操作改变矩阵的形状:reshapereshape(A,m,n):将矩阵元素按列方向进行重组重组后得到的新矩阵的元素个数必须与原矩阵元素个数相等!矩阵操作查看矩阵的大小:sizesize(A)列出矩阵A的行数和列数size(A,1)返回矩阵A的行数size(A,2)返回矩阵A的列数例:A=[123;456]size(A)size(A,1)size(A,2)length(x)返回向量X的长度length(A)等价于max(size(A))自己动手1、用rand函数生成8×10矩阵A;2、用length、size函数求出矩阵A的行数和列数;矩阵基本运算矩阵的加减:对应分量进行运算要求参与加减运算的矩阵具有相同的维数例:A=[123;456];B=[321;654]C=A+B;D=A-B;矩阵的普通乘法要求参与运算的矩阵满足线性代数中矩阵相乘的原则例:A=[123;456];B=[21;34];C=A*B二矩阵基本运算矩阵的除法:/、\右除和左除若A可逆方阵,则A\B==A的逆左乘B==inv(A)*BB/A==A的逆右乘B==B*inv(A)X=A\B==A*X=BX=B/A==X*A=B通常,矩阵除法可以理解为当A和B行数相等时即可进行左除当A和B列数相等时即可进行右除矩阵的乘方A是方阵,p是正整数A^p表示A的p次幂,即p个A相乘。若A是方阵,p不是正整数A^p的计算涉及到A的特征值分解,即若A=V*D*V-1则A^p=V*(D.^p)/V矩阵的乘方若a是标量,A是方阵,且[V,D]=eig(A),则a^A=V*(a^D)/V若A,P均是矩阵,则A^P无定义若a是标量,ndddD00000021ndadadaDa^000^000^^21则矩阵的Kronecker乘积矩阵Kronecker乘积的定义设A是n×m矩阵,B是p×q矩阵,则A与B的kronecker乘积为:mmnnnmaBaBaBaBaBaBCABaBaBaB111212122212Kronecker乘积的性质是np×mq矩阵;通常BAABBA任何两个矩阵都有Kronecker乘积Matlab中实现两个矩阵Kronecker相乘的函数为kron(A,B)Kronecker乘积有时也称张量积矩阵的数组运算数组运算:对应元素进行运算点与算术运算符之间不能有空格!数组运算包括:点乘、点除、点幂相应的数组运算符为:“.*”,“./”,“.\”和“.^”参与运算的对象必须具有相同的形状!例:A=[123;456];B=[321;654];C=A.*B;D=A./B;E=A.\B;F=A.^B;函数取值设x是变量,f是一个函数当x=a是标量时,f(x)=f(a)也是一个标量当x=[a,b,…,c]是向量时,f(x)=[f(a),f(b),…,f(c)]函数作用在矩阵上的取值若A是矩阵,则f(A)是一个与A同形状的矩阵f作用在x的每个分量上函数取值怎样计算eA?例:x=[0:pi/4:pi];A=[123;456];y1=sin(x);y2=exp(A);y3=sqrt(A);)exp()exp()exp()exp()exp()exp()exp()exp()exp()exp(212222111211mnmmnnaaaaaaaaaA例:(exp(1)).^A矩阵的超越函数Matlab提供了三种矩阵函数:expm、sqrtm、logm详情参见联机帮助(helpexpm/sqrtm/logm)更一般的矩阵函数:funmfunm(A,@fun)参数fun的可以是exp,,log,cos,sin,cosh,sinh数与数组的点幂x.^y=[1^4,2^5,3^6]=[1,32,729]x.^2=[1^2,2^2,3^2]=[1,4,9]2.^x=?.^前面留个空格例:x=[123];y=[456];2.^[x;y]=?Matlab中的所有标点符号必须在英文状态下输入三矩阵函数以三角分解函数lu()和特征值分解函数eig()讲述矩阵函数的使用。1、三角分解最基本的分解“LU”分解,矩阵分解为两个基本三角矩阵形成的方阵,一个为上三角矩阵一个为下三角矩阵。计算的方法用高斯消去法。函数格式[L,U]=lu(X)%L,U为输出变量(返回值),A为输入变量,U为上三角阵,L为下三角阵或其变换形式,满足LU=X运行结果如下:A=[123;456;789];[L,U]=lu(A)运行结果:2、特征值分解如果A是n×n矩阵,若Ax=λx则称λ为A的特征值,x为相应的特征向量。函数eig()为特征值分解函数,其调用格式为:[x,D]=eig(A)%x、D为输出变量(返回值),A为输入变量.D的对角元素是特征值,x列是相应的特征向量例A=[123;456;789];[x,D]=eig(A)运行结果为:Matlab中常见数学函数sin、cos、tan、cot、sec、csc、…asin、acos、atan、acot、asec、acsc、…exp、log、log2、log10、sqrtabs、conj、real、imag、signfix、floor、ceil、round、mod、remmax、min、sum、mean、sort、fftnorm、rank、det、inv、eig、lu、qr、svd……①log是自然对数,即以e为底数②mod(x,y)结果与y同号,rem(x,y)则与x同号③max等函数的参数是矩阵时,是作用在矩阵各列上上机作业1.试分别生成5阶的单位阵、8阶均匀分布的随机矩阵及其下三角矩阵2.生产列向量x=[1,3,5,7,9,…,29]3.生成以x的元素为对角线的矩阵A,并输出A的行数4.生成一个与A同阶的正态分布的随机矩阵B5.输出A与B的kronecker乘积矩阵C6.生成由A与B点乘得到的矩阵D7.生成一个由D的第8、4、10、13行和第7、1、6、9、2列组成的子矩阵E8.求出矩阵E的最大元素9.教材第53页,1(1),(3),(4)、2、3、4、5