zoukankan      html  css  js  c++  java
  • 幂法和反幂法

        一、 幂法
        1. 幂法
        幂法是一种计算矩阵主特征值(矩阵按模最大的特征值)及对应特征向量的迭代方法, 特别是用于大型稀疏矩阵。
    设实矩阵A=[aij]n×n 有一个完全的特征向量组,其特征值为λ1 ,λ2 ,…,λn,相应的特征向量为x1 ,x2 ,…,xn.已知A的主特征值是实根,且满足条件
                  1 |>|λ2 |≥|λ3 |≥…≥|λn |, (2.1)
    现讨论求λ1 的方法。

        幂法的基本思想是任取一个非零的初始向量ν0 ,由矩阵A构造一向量序列
                
    称为迭代向量。由假设,ν0 可表示为

                     ν01 x12 x2 + … +αn xn (α≠0 ), (2.3) 

    于是
        
    其中

              (2.4)
    由假设
             
    从而
             
    这说明序列νk1k 越来越接近A的对应于λ1 的特征向量, 或者说当k充分大时
          

          
    即两相邻迭代向量分量的比值收敛到主特征值。
    如果1 |>11 |<1, 由(2.5)可知
             
    这样就得不到λ1 的特征向量,为此每求出νk 这一步,对其归一化:
           
    然后给出迭代向量
              νk+1 = Aμk , k=1,2,… 
    重复上面的过程,我们就得到下面的定理

        定理1 设A∈Rn×n n个线性无关的特征向量,主特征值λ1 满足

              1 |>|λ2 |≥|λ3 |≥…≥|λn |,

    则对任何非零初始向量ν001 ≠0 ),按下方法构造的序列k } ,{μk } :

               (2.7)
    其中 k |r = ‖ν‖ , 则有
             
    如果A的主特征值为实的重根,即λ12 =…=λr ,且 

                  r |>|λr+1 |≥…≥|λn |,

    又设An个线性无关的特征向量,λ1 对应的r个线性无关的特征向量为x1 ,x2 ,…,xr ,则由(2.2)式变成了

            
    这说明当A的主特征值是实的重根时,定理1的结论仍正确。
    例3 用幂法计算

    的主特征值和相应的特征向量。 

    于是得到 
     λ1 ≈ 2.5365323 
     
    及相应的特征向量

    (0.7482 0.6497 1)T
    λ1 和相应的特征向量为

    λ1 =2.5365258

     

     

        
        2. 加速方法
    由关系式
        
    可知,幂法计算A的主特征值的收敛速度主要由比值r=λ21 来决定,但当r接近于1时,收敛可能很慢,为此我们采用加速收敛方法。
        1) 原点平移法
    引进矩阵 
         B = A - pI ,
    其中p为代选参数。设A的特征值为λ12 ,…,λn , 则B的相应特征值为λ1 -p,λ2 -p,…,λn -p,A,B的特征向量相同。

    如果需要计算A的主特征值λ1 ,就要适当选择p使λ1 -p仍然是B的主特征值,且使
          |(λ2 -p)/(λ1 -p)|﹤|λ21 | .

    B应用幂法,使得在计算B的主特征值λ1 -p的过程中得到加速。这种方法通常称为原点平移法
     
        例4 设A∈R4×4 有特征值λj =15-j (j=1,2,3,4), 比值
                 r = λ21 ≈0.9
    作变换 
                 B = A-pI (p=12) ,
    B的特征值为
                μ1 = 2,μ2 = 1,μ3 = 0,μ4 = -1
    应用幂法计算B的主特征值μ1 的收敛速度的比值为
                
    A的特征值为实数时,即
                 λ1 >λ2 ≥…≥λn-1 ≥λn , (2.8)

              max{|λ1 -p|,…|λn -p|}=|λ1 -p|或者n -p|

    故,B=A-pI的主特征值为λ1 -pλn -p。令p* =(λ1n )/2 当选择p<p* 时, 则 1 -p|>|λn -p|, 对B的幂法收敛于λ1 -p此时
    收敛速度比ω=max {|λ2 -p|/|λ1 -p|,|λn -p| /|λ1 -p|}.如果p=(λ2n ), 收敛速度最快。

    当选择p>p* 时, 则 1 -p|<|λn -p|, 对B的幂法收敛于λn -p此时收敛速度比
     ω = max {|λ1 -p|/|λn -p|,|λn-1 -p| /|λn -p|}.
    如果p=(λ1n-1 ), 收敛速度最快。

               例5 计算例3中矩阵A的主特征值(2.536526>1.480121>0.016647)。

     解 作变换B = A-pI,取p=0.75,则


    B应用幂法,计算结果如图

    由此得B的主特征值为
     μ1 ≈ 1.7865914
    A的主特征值λ1

     λ1 ≈μ1 +0.75=2.5365914,

    与例3结果比较,上述结果比例3迭代15次还好. 若迭代15次,μ1 =1.7865258(相应的λ1 =2.5365258).

         2) 埃特肯(Aitken)加速
     如果序列{ai }线性收敛于a, 即
                    
    则当n充分大时,有
                    
    由此可得
            

    序列{an }更快地收敛到 

    a,这就是Aitken加速法。将这
    一方法用于幂法所产生的序列
     
    可加快幂法的收敛速度。对例 
    3 用Aitken加速法得到的结果
    见右图。

        二、 反幂法

    反幂法用来计算矩阵按模最小的特征值及其特征向量,也可用来计算对应与一个给定近似特征值的特征向量。

    A∈Rn×n 为非奇异矩阵,A的特征值依次记为
             1 |≥|λ2 |≥|λ3 |≥…≥|λn |,
    相应的特征向量为x1 ,x2 ,…,xn , 则A-1 的特征值为
     |1/λn |≥|1/λn-1 |≥…≥|1/λ1 | ,
    相应的特征向量为xn ,x n-1 ,…,x1 . 所以计算A的按模最小的特征值λn的问题就是计算A-1 的按模最大的特征值问题。
    对于A-1 应用幂法迭代(称为反幂法),可求得矩阵A-1的主特征值1/λn ,从而求得A的按模最小的特征值λn

        反幂法迭代公式
    任取初始向量ν00 ≠0,构造向量序列
              (2.10)

     迭代向量νk 可以通过解方程组 kk-1 求得.

    在反幂法中也可以用原点平移法来加速迭代过程或求其他特征值及特征向量。
    如果矩阵(A-pI)-1 存在, 对其应用幂法,得反幂法的迭代公式
                 

    如果pA的特征值λj 的一个近似值,且设λj与其他特征值分离,即
                 j -p|<<|λi -p| (i≠j),

    就是说1/(λj -p)是(A-pI)-1 的主特征值,可用反幂法(2.11)计算特征值及特征向量。这样我们有下面的定理

        定理2 设A∈Rn×nn个线性无关的特征向量, A的特征值及对应的特征向量分别记为λixi (i=1,2,…,n),而pλj 的近似值,(A-pI)-1存在,且
                j -p|<<|λi -p| (i≠j)

    则对任意的初始非零向量μ0 αj ≠0,有反幂法迭代公式(2.11)构造的向量序列k },{μk } 满足

                 

                
    且收敛速度由比值
                
    确定。

        由该定理知,对A-pI(其中p≈λj)应用反幂法,可用来计算特征向量xj . 只要选择的pλj 的一个较好的近似且特征值分离情况较好,一般r很小,常常只要迭代一二次就可完成特征向量的计算。

        反幂法迭代公式中的νk 是通过解方程组
                    (A - pI)νk = μk-1 

    求得的。为节省工作量,可先将A - pI进行三角分解 
                     (A - pI) = LU ,
    其中P为某个排列阵,于是求νk 相当于解两个三角形方程组
                    (2.12)
     实验表明,按下述方法选择μ0 较好:选μ0 使

                   1 = L-1 μ0 = (1,1,…,1)T 

    用回代求解(2.12)即得ν1 ,然后再按公式(2.11)进行迭代。

        反幂法迭代公式
          1. 分解计算 (A - pI) = LU , 且保存L,U信息。
          2. 反幂法迭代
     
         (1) 解1 =(1,1,…,1)Tν1 

            μ11 / (ν1 )r
     
         (2) k=2,3,…
          a) 解 Lykk-1 ,求得yk

          解 k = yk ,求得νk

          b) μkk /(νk)r 

        例6 用反幂法求 对应于特征值λ=1.2679(精确 特征值为的特征向量, 并求其它的特征值和特征向量.
        解 用部分选主元的三角分解将A-pI(其中p=1.2679)分解为

    (A-pI) = LU
    其中



       
     
    注意到
     λ123 = a11 +a22 +a33 
     
     = 2+3+5 = 9 

    并由圆盘定理可知
     1<λi <5,i=1,2,3
    故另外两个特征值大于2,取p从2增加可得另外两个特征值和特征向量:

    λ2 =3.00000 x2 =(1.00000,1.00000,1.00000)T 


    λ3 =4.73308 x3 =(0.26886,0.73308,1.00000)T
  • 相关阅读:
    CDOJ 1059 秋实大哥与小朋友 STL(set)+离散化+BIT区间更新单点查询
    hdu 1754 线段树 水题 单点更新 区间查询
    ZOJ 2301 离散化
    hdu 1166 线段树 区间求和 +单点更新 CD模板
    UVA 12299 线段树 ( 单点跟新 , 区间查询)
    TTTTTTTTTTTTT LA 2191 树状数组 稍修改
    TTTTTTTTTTT LA 4329 BIT模版
    POJ 1912 凸包
    对django模型中的objects的理解
    巨蟒python全栈开发django4:url反向解析图解&&模板渲染2
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205247.html
Copyright © 2011-2022 走看看