我是靠谱客的博主 正直眼睛,最近开发中收集的这篇文章主要介绍四、矩阵特征值与特征向量的计算,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 幂法和反幂法

1.1 幂法

幂法主要用于求矩阵的按模[1]最大的特征值与相应的特征向量。它是通过迭代产生向量序列,由此计算特征值和特征向量。

n × n ntimes n n×n阶实矩阵 A A A的特征值 λ i   ( i = 1 , 2 , … , n ) lambda_i (i=1,2,dots,n) λi (i=1,2,,n)满足:

∣ λ 1 ∣ > ∣ λ 2 ∣ ≥ ⋯ ≥ ∣ λ n ∣ |lambda_1|>|lambda_2|gecdotsge|lambda_n| λ1>λ2λn

且与 λ i ( i = 1 , 2 , … , n ) lambda_i(i=1,2,dots,n) λi(i=1,2,,n)相应的特征向量 u 1 , u 2 , … , u n u_1,u_2,dots,u_n u1,u2,,un线性无关。(?为什么线性无关)

给定初始向量 x ( 0 ) ≠ 0 x^{(0)}ne0 x(0)=0,由迭代公式

x ( k + 1 ) = A x ( k ) ( k = 0 , 1 , 2 , …   ) ( 4 − 1 ) x^{(k+1)}=Ax^{(k)}quad(k=0,1,2,dots)quadquadquadquadquad(4-1) x(k+1)=Ax(k)(k=0,1,2,)(41)

产生向量序列 { x ( k ) } {x^{(k)}} {x(k)},可以证明,当 k k k充分大时,有 λ i ≈ x i ( k + 1 ) / x i ( k ) lambda_iapprox x_i^{(k+1)}/x_i^{(k)} λixi(k+1)/xi(k),相应的特征向量为 x ( k + 1 ) x^{(k+1)} x(k+1)

为简便起见,不妨设 ∥ u i ∥ = 1   ( i = 1 , 2 , … , n ) Vert u_iVert=1 (i=1,2,dots,n) ui=1 (i=1,2,,n)。因为 u i u_i ui线性无关(线性无关的概念),故必存在n个不全为零的数 α i   ( i = 1 , 2 , … , n ) alpha_i (i=1,2,dots,n) αi (i=1,2,,n),使得 x ( 0 ) = ∑ i = 1 n α i u i x^{(0)}=sumlimits_{i=1}^nalpha_iu_i x(0)=i=1nαiui。由式(4-1)得:

x ( k + 1 ) = A x ( k ) = A K + 1 x ( 0 ) = ∑ i = 1 n A k + 1 ( α i u i ) x^{(k+1)}=Ax^{(k)}=A^{K+1}x^{(0)}=sumlimits_{i=1}^nA^{k+1}(alpha_iu_i) x(k+1)=Ax(k)=AK+1x(0)=i=1nAk+1(αiui)

即:

x ( k + 1 ) = λ 1 k + 1 [ α 1 u 1 + ( λ 2 λ 1 ) α 2 u 2 + ⋯ + ( λ n λ 1 ) α n u n ] ( 4 − 2 ) x^{(k+1)}=lambda_1^{k+1}[alpha_1u_1+(frac{lambda_2}{lambda_1})alpha_2u_2+cdots+(frac{lambda_n}{lambda_1})alpha_nu_n]quadquadquadquadquad(4-2) x(k+1)=λ1k+1[α1u1+(λ1λ2)α2u2++(λ1λn)αnun](42)

α i ≠ 0 alpha_ine0 αi=0,由 ∣ λ 1 ∣ > ∣ λ i ∣   ( i = 2 , 3 , … , n ) |lambda_1|>|lambda_i| (i=2,3,dots,n) λ1>λi (i=2,3,,n)得:

lim ⁡ k → ∞ ( λ i λ 1 ) k + 1 α i u i = 0 limlimits_{ktoinfty}(frac{lambda_i}{lambda_1})^{k+1}alpha_iu_i=0 klim(λ1λi)k+1αiui=0

于是:

lim ⁡ k → ∞ ∑ i = 2 n ( λ i λ 1 ) α i u i = 0 limlimits_{ktoinfty}sumlimits_{i=2}^n(frac{lambda_i}{lambda_1})alpha_iu_i=0 klimi=2n(λ1λi)αiui=0

故只要k充分大,就有:

x ( k + 1 ) = λ 1 k + 1 [ α 1 u 1 + ∑ i = 2 n ( λ i λ 1 ) α i u i ] ≈ λ 1 k + 1 α 1 u 1 ( 4 − 3 ) x^{(k+1)}=lambda_1^{k+1}[alpha_1u_1+sumlimits_{i=2}^n(frac{lambda_i}{lambda_1})alpha_iu_i]approxlambda_1^{k+1}alpha_1u_1quadquadquadquad(4-3) x(k+1)=λ1k+1[α1u1+i=2n(λ1λi)αiui]λ1k+1α1u1(43)

因此,可把 x ( k + 1 ) x^{(k+1)} x(k+1)作为与 λ 1 lambda_1 λ1相应的特征向量的近似。由式:

x ( k + 1 ) ≈ λ 1 k + 1 α 1 u 1 , x ( k ) ≈ λ 1 k α 1 u 1 x^{(k+1)}approxlambda_1^{k+1}alpha_1u_1,quad x^{(k)}approxlambda_1^kalpha_1u_1 x(k+1)λ1k+1α1u1,x(k)λ1kα1u1

此时我们可以得出:

λ 1 ≈ x i ( k + 1 ) x i ( k ) ( i = 1 , 2 , … , n ) ( 4 − 4 ) lambda_1approxfrac{x_i^{(k+1)}}{x_i^{(k)}}quad(i=1,2,dots,n)quadquadquadquadquadquad(4-4) λ1xi(k)xi(k+1)(i=1,2,,n)(44)

其中 x i ( k ) x^{(k)}_i xi(k) x ( k ) x^{(k)} x(k)的第i个分量。按式(4-1)和式(4-4)计算矩阵 A A A按模最大的特征值与相应的特征向量的方法称为幂法。

需要说明的是,如果 x ( 0 ) x^{(0)} x(0)的选取恰恰使得 α 1 = 0 alpha_1=0 α1=0,幂法计算仍能进行。因为计算过程中舍入误差的影响,迭代若干次后,必然会产生一个向量 x ( k ) x^{(k)} x(k),它在 u 1 u_1 u1方向上的分量不为零。这样,以后的计算就满足所设条件。另外需要注意的一点是,因为 x ( k ) ≈ λ 1 k α 1 u 1 x^{(k)}approxlambda_1^kalpha_1u_1 x(k)λ1kα1u1,计算过程中可能会出现溢出( ∣ λ 1 ∣ > 1 |lambda_1|>1 λ1>1)或成为0( ∣ λ 1 ∣ < 1 |lambda_1|<1 λ1<1)的情形。为避免这一情形的出现,实际计算时每次迭代所求的的向量都要归一化。因此,幂法实际使用的计算公式是:

{ y ( k ) = x ( k ) x r ( k ) ,   ∣ x r ( k ) ∣ = max ⁡ 1 ≤ i ≤ n ∣ x i ( k ) ∣ ( k = 0 , 1 , 2 , …   ) x ( k + 1 ) = A y ( k ) λ 1 ≈ x r ( k + 1 ) ( 4 − 5 ) begin{cases}y^{(k)}=frac{x^{(k)}}{x_r^{(k)}}, |x_r^{(k)}|=maxlimits_{1le ile n}|x_i^{(k)}|quad(k=0,1,2,dots)\x^{(k+1)}=Ay^{(k)}\lambda_1approx x_r^{(k+1)}\end{cases}quadquadquadquadquad(4-5) y(k)=xr(k)x(k), xr(k)=1inmaxxi(k)(k=0,1,2,)x(k+1)=Ay(k)λ1xr(k+1)(45)

待补充 92

1.2 幂法的加速

因为幂法的收敛条件是线性的,而且依赖于收敛因子 ∣ λ 2 / λ 1 ∣ |lambda_2/lambda_1| λ2/λ1,当收敛因子接近于1时,幂法收敛很慢。幂法的加速有许多方法,下面介绍其中两种。

原点移位法

容易看出,矩阵 A A A A − λ 0 I A-lambda_0I Aλ0I的特征值有以下关系:若 λ i lambda_i λi A A A的特征值,则 λ i − λ 0 lambda_i-lambda_0 λiλ0就是 A − λ 0 I A-lambda_0I Aλ0I的特征值,而且相应的特征向量不变。如果对矩阵 A − λ 0 I A-lambda_0I Aλ0I按式(4-1)计算,则有:

x k + 1 = ( A − λ 0 I ) x ( k ) = ( λ 1 − λ 0 ) k + 1 [ α 1 u 1 + ( ( λ 2 − λ 0 ) ( λ 1 − λ 0 ) ) α 2 u 2 + ⋯ + ( ( λ n − λ 0 ) ( λ 1 − λ 0 ) ) α n u n ] x^{k+1}=(A-lambda_0I)x^{(k)}quadquadquadquadquadquadquadquadquadquadquadquadquadquadquadquadquadquadquadquadquadquadquad\=(lambda_1-lambda_0)^{k+1}[alpha_1u_1+(frac{(lambda_2-lambda_0)}{(lambda_1-lambda_0)})alpha_2u_2+cdots+(frac{(lambda_n-lambda_0)}{(lambda_1-lambda_0)})alpha_nu_n] xk+1=(Aλ0I)x(k)=(λ1λ0)k+1[α1u1+((λ1λ0)(λ2λ0))α2u2++((λ1λ0)(λnλ0))αnun]

适当选取 λ 0 lambda_0 λ0,使得 ∣ λ 1 − λ 0 ∣ > ∣ λ i − λ 0 ∣ |lambda_1-lambda_0|>|lambda_i-lambda_0| λ1λ0>λiλ0,且:

∣ λ i − λ 0 λ 1 − λ 0 ∣ < ∣ λ 2 λ 1 ∣ ( i = 2 , 3 , … , n ) |frac{lambda_i-lambda_0}{lambda_1-lambda_0}|<|frac{lambda_2}{lambda_1}|quad(i=2,3,dots,n) λ1λ0λiλ0<λ1λ2(i=2,3,,n)

这样,用幂法计算 A − λ 0 I A-lambda_0I Aλ0I的最大模特征值 λ 1 − λ 0 lambda_1-lambda_0 λ1λ0及相应特征向量的收敛速度比对 A A A用幂法计算要快。这种加速收敛的方法称为原点移位法。

待补充

幂法的艾特肯(Aitken)加速

如果序列 { a k } {a_k} {ak}线性收敛到 a a a,即:

lim ⁡ k → ∞ a k + 1 − a a k − a = c ≠ 0 limlimits_{ktoinfty}frac{a_{k+1}-a}{a_k-a}=cne0 klimakaak+1a=c=0

则当 k k k充分大时,有

a k + 2 − a a k + 1 − a ≈ a k + 1 − a a k + 1 − a ≈ a k + 1 − a a k − a frac{a_{k+2}-a}{a_{k+1}-a}approxfrac{a_{k+1}-a}{a_{k+1}-a}approxfrac{a_{k+1}-a}{a_k-a} ak+1aak+2aak+1aak+1aakaak+1a

由此可解出:

a ≈ a k + 2 a k − a k + 1 2 a k + 2 − 2 a k + 1 + a k = a k − ( a k + 1 − a k ) 2 a k + 2 − 2 a k + 1 + a k = a k ^ ( 4 − 10 ) aapproxfrac{a_{k+2}a_k-a_{k+1}^2}{a_{k+2}-2a_{k+1}+a_k}=a_k-frac{(a_{k+1}-a_k)^2}{a_{k+2}-2a_{k+1}+a_k}=hat{a_k}quadquadquadquadquad(4-10) aak+22ak+1+akak+2akak+12=akak+22ak+1+ak(ak+1ak)2=ak^(410)

序列 { a k ^ } {hat{a_k}} {ak^} { a k } {a_k} {ak}更快地收敛到 a a a,这就是Aitken加速法。将这一方法用于幂法所产生的序列 { a k } {a_k} {ak},可加快幂法的收敛速度。

待补充

1.3 反幂法

反幂法是计算矩阵按模最小的特征值及特征向量的方法,也是修正特征值、求相应特征向量的最有效的方法。

A A A n × n ntimes n n×n 阶非奇异矩阵, λ , u lambda,u λ,u A A A的特征值与相应的特征向量,则 A − 1 A^{-1} A1的特征值是 A A A的特征值的倒数,而相应的特征向量不变,即:

A − 1 u = 1 λ u A^{-1}u=frac{1}{lambda}u A1u=λ1u

因此,若对矩阵 A − 1 A^{-1} A1用幂法,即可计算出 A − 1 A^{-1} A1的按模最大的特征值,其倒数恰为 A A A的按模最小的特征值。这就是反幂法的基本思想。

因为 A − 1 A^{-1} A1的计算比较麻烦,而且往往不能保持矩阵 A A A的一些好性质(如稀疏性),因此,反幂法在实际运算时以求解方程组:

A x ( k + 1 ) = x ( k ) ( 4 − 12 ) Ax^{(k+1)}=x^{(k)}quadquadquadquadquadquad(4-12) Ax(k+1)=x(k)(412)

代替幂法迭代:

x ( k + 1 ) = A − 1 x ( k ) x^{(k+1)}=A^{-1}x^{(k)} x(k+1)=A1x(k)

求得 x ( k + 1 ) x^{(k+1)} x(k+1),每迭代一次要解一个线性方程组(4-12)。由于矩阵在迭代过程中不变,故可对 A A A先进行三角分解。这样,每次迭代只要解两三个三角方程组。

待补充

补充内容

[1] 假定矩阵 A A A 有 n 个线性无关的特征向量,n个特征值按模由大到小排列:
∣ λ 1 ∣ ≥ ∣ λ 2 ∣ ≥ ⋯ ≥ ∣ λ n ∣ |lambda_1|ge|lambda_2|gecdotsge|lambda_n| λ1λ2λn
那么 λ 1 lambda_1 λ1是按模最大特征值。

最后

以上就是正直眼睛为你收集整理的四、矩阵特征值与特征向量的计算的全部内容,希望文章能够帮你解决四、矩阵特征值与特征向量的计算所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部