QR分解求矩阵全部特征值

时间:2024-02-21 16:58:56

    QR算法求矩阵全部特征值的基本思想是利用矩阵的QR分解通过迭代格式

                                

将A=A1化成相似的上三角阵,从而求出矩阵A的全部特征值。

       QR方法的计算步骤如下:

          

          下面就依次进行介绍。

 

       一. 将一般矩阵化为上Hessenberg阵

        1.定义                                      

 

                 一个矩阵如果满足i>j+1时aij=0,则将这个矩阵成为上Hessenberg阵。上Hessenberg阵

         的形式如下:

                 

           2. Householder变换将一般矩阵转化为上Hessnberg阵

                       首先,选取Householder矩阵H1,使得经过H1相似变换后的矩阵H1AH1的元素a21下面的

               元素全部为0,即a31, a41, ....., am1均为0,H1取如下形式

                                           

                    其中 为n-1阶HouseHolder矩阵。然后选取Householder矩阵H2,使得经过H2相似变换

            之后的矩阵H2(H1AH1)H2第二列中a32下面的a42, ....am2均为0。如此进行n-2次,可以构造

           n-2个householder矩阵H1,H2, Hn-2,使得 Hn-2....H2H2AH1H2....Hm-2 = H(H为上Hessenberg矩阵)。

                    对于一个n*m的矩阵A,第col次的H可以这样构造求得(col从0开始):

                      

                其中,I为n*n的单位矩阵, v\'表示矩阵v的转置, sign(x0)表示x0的符号的相反数( 当x0>0时sign=-1,当x<=0时为1),

                ||x||表示向量x的长度, col等于所求的上hessenberg矩阵的序号,从0开始。

 

      二. 用Givens变换对上hessnberg矩阵作QR分解

                  

                  

                       

                  

                          

                        此时有  H = R21\' * R32\' * ... * Rn(n-1)\'R = QR。

                        多次计算H,直到H的变化小于一个较小的阈值时,停止迭代,此时H主对角线上的元素

            即为矩阵A的全部特征值。

                        下面举个例子来说明求解矩阵的全部特征值的过程。

                                 求矩阵的全部特征值

                            首先将A化成上hessenberg阵,取

                              x = [0, 6, 4], 则 ||x|| = = 

                       则 w = [0, , 0] , v = w + 1 * x = [0, 6+, 4]

                       则 p = v*v\'/v\'*v =          

                       于是 H1 = I - 2*p =  

                                所以 H = H1AH1 =

                                H即为与A相似的上hessenberg矩阵。将H进行QR分解

                                

                                                                                                         

                                     

                         

              这个程序的完整代码可以到这里下载,http://download.csdn.net/detail/xxc1605629895/6473181

转载 http://blog.csdn.net/johnf_nash/article/details/13292803