您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > matlab矩阵运算
Matlab基础向量与矩阵运算向量与矩阵的生成向量与矩阵运算向量的生成直接输入: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)常见矩阵生成函数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))矩阵基本运算矩阵的加减:对应分量进行运算要求参与加减运算的矩阵具有相同的维数例: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列数相等时即可进行右除线性代数运算的MATLAB命令MATLAB是矩阵化程序设计语言,所以处理矩阵和向量运算特别方便。关于矩阵和向量的一些基本运算命令已在前面有所介绍,常用的命令和函数还有zeros生成0矩阵eig特征值、特征向量ones生成1矩阵diag对角矩阵eye生成单位矩阵trace方阵的迹linspace生成等距行向量rank矩阵的秩rand生成随机矩阵rref行最简形det方阵的行列式orth正交规范inv方阵的逆null求基础解系norm范数jordanJordan分解cond方阵的条件数X=A\B==A*X=BX=B/A==X*A=B当A为方阵,其结果与inv(A)*B基本一致;当A不为方阵,除法将分三种情况自动检测:若为超定方程组(既无解)除法将给出最小二乘意义上的近似解,即使向量AX-B的长度最小;若为不定方程组(即无穷多解),除法将给出一个具有最多零元素的特解(不是通解);若为唯一解,除法将给出这个解。用户对结果应有一个正确的认识。例:解下列方程组11(4212324213324(2214242xyxyxyzxyzxyxyxyxyxy()定解方程组)()(不定方程组)()超定方程组)()(奇异方程组)解:A=[11;1-1];B=[1;4];x=A\Bx=2.5000-1.5000求得唯一解。A=[121;3-21];B=[1;4];x=A\Bx=1.2500-0.12500仅求得一个特解。A=[12;3-2;1-1];B=[1;4;2];x=A\Bx=1.2838-0.1757求得一最小二乘近似解。A=[12;24];B=[1;2];x=A\BWarning:Matrixissingulartoworkingprecision.(TypewarningoffMATLAB:singularMatrixtosuppressthiswarning.)x=InfInf可见,不能直接求解。A=[12;24;00];B=[1;2;0];x=A\B%增加0x+0y=0,使A不为方阵Warning:Rankdeficient,rank=1tol=2.9790e-015.x=00.5000仍可求一特解。例:求线性方程组的通解解:在有无穷多解的情况可用三种方法求得通解。12341234123411221xxxxxxxxxxxx方法一:用rref化为行最简形以后求解。clear;a=[1-11-1;-111-1;2-2-11];b=[1;1;-1];[rank(a),rank([a,b])]ans=22%秩相等且小于4,说明有无穷多解rref([a,b])ans=1-1000001-1100000即通解为:小x1=x2,x3=x4+1(x2,x4自由)方法二:先用除法求出一个特解,再用null求得齐次组的基础解系。clear;a=[1-11-1;-111-1;2-2-11];b=[1;1;-1];x0=a\b;x=null(a)Warning:Rankdeficient,rank=2tol=2.1756e-015.x=-0.70710-0.70710-0.00000.7071-0.00000.7071通解为k1*x(:,1)+k2*x(:,2)+x0方法三:使用solve求解。(见第8章)特征值和特征向量[V,D]=eig(A)返回方阵A的特征值和特征向量。其中D为特征值构成的对角阵,每个特征值对应的V的为属于该特征值的一个特征向量,每个特征向量都是单位向量,并且属于同一特征值的线性无关特征向量已正交化。eig(A)返回方阵A的特征值构成的列向量。例:A=[123;234;245];[V,D]=eig(A),t=eig(A)V=-0.3957-0.2167+0.5832i-0.2167-0.5832i-0.57650.63130.6313-0.7149-0.3914-0.2471i-0.3914+0.2471iD=9.3329000-0.1665+0.2818i000-0.1665-0.2818it=9.3329-0.1665+0.2818i-0.1665-0.2818i矩阵的乘方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例:矩阵的超越函数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中的所有标点符号必须在英文状态下输入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列组成的子矩阵E
本文标题:matlab矩阵运算
链接地址:https://www.777doc.com/doc-3350381 .html