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
