您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > 88matlab矩阵的分解
第三章第1頁第三章矩阵的分解(一)矩阵的特征值与特征向量(EigenvaluesandEigenVectors)1.矩阵的特征值与特征向量解Ax=λx运算式中的λ及其所对应的非零的向量x,我们称λ/x为矩阵A的特征值与特征向量。改写原式为,(A-λI)x=0,I是单位矩阵,我们令P(λ)=det(A-λI)=0,则P(λ)的展开式称为矩阵A的特征多项式,解出矩阵A的特征多项式,就可得矩阵A的所有eigenvalues。再将每一个eigenvalue代入原式中,即可求出其相对应的eigenvectors。例1:解矩阵A=[-9-3-16;13716;3310]的特征值与特征向量。【解1】先利用函数poly()求出矩阵A的特征多项式,再用roots()函数,求出特征多项式所有的根。A=[-9-3-16;13716;3310];poly(A)%利用一个向量来储存此多项式的系数roots(poly(A))ans=1.0000-8.0000-44.0000240.0000ans=10.00004.0000-6.0000上面输出结果中,第一个ans是A的特征多项式的系数,即P()32844240第二个ans是A的eigenvalues:10,4,-6接着针对某个特征值,我们找出其对应之特征向量利用rref()函数,求出(A-λI)的rowreducedechelonform或是利用null()函数,求出(A-λI)nullspace的基底向量第三章第2頁A=[-9-3-16;13716;3310];rref(A-10*eye(size(A)))null(A-10*eye(size(A)))ans=10101-1000ans=0.5774-0.5774-0.5774上面输出结果中,第一个ans是()AI的reducedrowechelonform即xxxx132300令xt3,t0得xtttt111,为10所对应的eigenvectors第二个ans是()AInullspace的基底向量,这个基底向量的长度为1.上述的解x,当取t=-1再除以norm(x),即可得这个基底向量。依此方法,将其他的eigenvectors求出。【解2】使用matlab函数eig(),eig()有两种不同的输出形式:eig(A)只传回eigenvalues,而[V,D]=eig(A)则传回D是由eigenvalues形成的diagonalmatrix;V是由eigenvalues所对应的eigenvectors形成的matrix,满足A*V=V*D,当V是nonsingular时,则表示矩阵A可对角化。A=[11-1;201;110];eig(A)%传回eigenvalues所形成的行向量[V,D]=eig(A)%D是由eigenvalues形成的diagonalmatrix%V是由eigenvalues所对应的eigenvectors形成的matrix第三章第3頁ans=1.4142-1.41421.0000V=-0.1913-0.46190.0000-0.73250.84460.7071-0.6533-0.27060.7071D=1.4142000-1.41420001.0000在上面的输出结果中,V的第一行行向量,为eigenvalue1.4142所对应的eigenvector;第二行行向量,为eigenvalue-1.4142所对应的eigenvector;第三行行向量,即为eigenvalue1.000所对应的eigenvector。rank(V)%检查V的行向量是否线性独立inv(V)*A*V%验证A是否对角化ans=3ans=1.4142-0.0000-0.00000.0000-1.4142-0.0000-0.0000-0.00001.0000从rank(V)=3,V的行向量是线性独立,得知A可对角化而且V-1AV也几乎近似于diagonalmatrixD.formatlong%观察数值的准确度inv(V)*A*Vans=1.41421356237309-0.00000000000000-0.000000000000000.00000000000000-1.41421356237310-0.00000000000000-0.00000000000000-0.000000000000001.00000000000000第三章第4頁2.矩阵的对角化Theorem:Ann-by-nmatrixAisdiagonalizableifandonlyifithasnlinearlyindependenteigenvectors.也就是说;如果A有n个线性独立的eigenvectors,那么矩阵A就是可以对角化的。此外,我们也可证明当特征值不同时,其所对应的特征向量是线性独立的。从上面的例子,我们可观察到这个结论。例:求出矩阵A=[-2813-42;-1013-6;19-730]的eigenvalues&eigenvectors,判断矩阵A是否可以对角化?【解】formatshortA=[-2813-42;-1013-6;19-730][V,D]=eig(A)A=-2813-42-1013-619-730V=-0.7570-0.6667-0.6667-0.5179-0.6667-0.66670.39840.33330.3333D=3.00000006.00000006.0000从上面D的结果eigenvaluesare3,6,and6;6的重根数为2,而其对应的eigenvectors,V的第二行行向量与第三行行向量,看起来似乎是一样的,并不线性独立,故矩阵A不可以对角化。若我们观察V的秩数(rank),会发现一个问题:rank(V)ans=3从ans=3,表示V的行向量是线性独立,与上述看到的结果有异。下面我们使用formatlong的格式注意其数值的变化.第三章第5頁formatlongVDformatshort%改回原来的格式V=-0.75697811924511-0.66666669551571-0.66666663781762-0.51793239737824-0.66666662470442-0.666666708628910.398409536444800.333333359559740.33333330710693D=3.000000000000140005.999999362698260006.00000063730158因为计算误差的结果Matlab把V的第二,第三行向量,视为不同而且线性独立.因此我们得到rank(V)=3.让我们真正来计算6对应的eigenvectors.V1=rref(A-6*eye(3))%rrefofmatrixA-6Iv1=null(A-6*eye(3))V1=102012000v1=0.66670.6667-0.3333从上面的结果EigenValue6的几何重根数(GeometricMultiplicity)=1,表示其特征向量与零向量形成的向量空间(eigenspace)之维度只有1,而代数重根数(AlgebraicMultiplicity)=2.因此,EigenValue6必然有一个2*2的Jordanblock,下面我们将说明矩阵的Jordanform.第三章第6頁3.矩阵的JordanForm[8,p.358]所谓JordanblockJ(λ)是一个上三角方阵,其主对角上的元素是λ,主对角上面的元素是1,其余则全为0.即[λ10…0J(λ)=0λ1…0...000…λ]Theorem:Eachp*pmatrixAissimilartoamatrixJinJordanform,J=Q-1AQ.with[J10…0Q-1AQ=0J2…0…00…Jk]whereeachJrisannr*nrJordanblockandk=k1+k2+…+ksequalsthesumofthegeometricmultiplicitiesofthedistincteigenvaluesλ1,λ2,…λsofA.ThesameeigenvaluemayoccurindifferentJordanblocksJr,butthetotalnumberofblockswiththateigenvalueequalsitsgeometricmultiplicitykj,j=1,2,…,s.也就是说;针对某个eigenvalue可能出现在不同的JordanBlock,但其Block的总个数,等于它的几何重根数.而在所有Block主对角上,此eigenvalue出现的总数,就是它的代数重根数.考虑nr*nrJordanblockJr,其作用在矩阵Q的行向量,若令有影响到的行向量为Vr1,Vr2,…,Vrnr;从AQ=QJ我们可得到下列关系式:AVr1=λrVr1andAVrj=λrVrj+Vr,j-1forj=2,…,nr其中Vr1是λr的eigenvector,而Vrj则称为generalizedeigenvector.从上个例子中,我们的第一个eigenvalueλ1=3所对应的Jordanblock,J(3)=[3]而eigenvector为V11=V(:,1)=[-0.7570-0.51790.3984],第二个λ2=6所对应的Jordanblock,J(6)=[61;06],因为它的几何重根数=1;而代数重根数=2.若我们要找出矩阵Q的行向量,则必须找到一个generalizedeigenvector,for第三章第7頁λ2=6.A1=A-6*eye(3);%解(A-6I)x=b,b=[22-1]'b=[22-1]';%bisaneigenvectorofAwith%eigenvalue=6matgv=rref([A1b])matgv=1.000002.00000.111101.00002.00000.44440000从matgv的结果得(A-6I)x=b=[22-1]'的解,generalizedeigenvectors,为t*b+[0.11110.44440]'若取t=0,则得到向量gv=[0.11110.44440]'令Q=[V(:,1)V(:,2)gv];我们计算Q-1AQ的结果gv=matgv(:,4);Q=[V(:,1)bgv];Jd=inv(Q)*A*QJd=3.0000-0.00000-0.00006.00001.00000.000006.0000上述的结果说明,虽然矩阵A不可对角化,但是可相似(similarto)于一个矩阵Jd,inJordanForm.例:找一个矩阵A=[22-1;-1-11;-1-22]的JordanForm.【解】先找出A的eigenvalues以及其对应的几何重根数与代数重根数.再找出矩阵Q的行向量,即eigenvectors/generalizedeigenvectors.A=[22-1;-1-11;-1-22];eig(A)ans=1.0000+0.0000i1.0000-0.0000i1.0000第三章第8頁为了解上面ans复数的部分,是否为误差值?我们观察其特征多项式poly(A)%检视上面ans复数的部分是否为误差值ans=1.0000-3.00003.0000-1.0000从ans的结果,我们得到矩阵A的特征多项式P(λ)=(λ-1)3,故其特征值λ=1有代数重根数3;rref(A-eye(3))ans=12-1000000我们得到矩阵A的特征向量x,可写成x=[-2α+βαβ]=α[2-10]'+β[101]'{[2-10]',[101]'}线性独立,所以特征值λ=1有几何重根数2;因此有两个Jordanblocks,一个是1*1而另一个是2*2.令矩阵Q的第一个行向量q1=[101]',第二行向量q2=α[2-10]'+β[101]',则必须找到一个generali
本文标题:88matlab矩阵的分解
链接地址:https://www.777doc.com/doc-1910911 .html