1. 程式人生 > >QR分解,SVD分解

QR分解,SVD分解

QR分解

對於n階方陣A,A可逆,則存在完全QR分解,Q為n*n的正交矩陣,R為n*n的上三角矩陣。

對於非方陣的m*n(m≥n)階矩陣A,A列滿秩,存在QR分解,Q為m*n列正交矩陣,R為n*n的上三角矩陣。

方法一:採用Gram-Schmidt法的QR分解

對於可逆矩陣A的列向量組進行Gram–Schmidt正交化,可得標準正交向量

用矩陣表達即是:

 T=(tij),A=(),Q=(),這裡注意Q是正交矩陣。若記,則A = QR,其中T的逆矩陣R仍然是上三角矩陣

方法二:採用修正Gram-Schmidt法的QR分解

        對於Gram–Schmidt正交化求正交矩陣Q提出一種改進的計算方法,改進的地方是每產生一個單位正交向量後,就用後續的向量減去它,消去其中包含這個正交向量的部分。

       將向量a_1標準正交化的結果取作 q_1,即

       \\R_{11}=||a_1||\\ \\q_1=a_1/R_{11}

       然後從a_2中減去與a_1平行的分量,然後再標準化

       \\R_{12}=q_{1}^Ha_2 \\ \\R_{22}=||a_2-q_1R_{12}|| \\ \\ q_2=(a_2-q_1R_{12})/R_{22}

        其中R_{12}表示a_2q_1中的投影長度。a_2-q_1R_{12}表示a_2 —(a_2q_1中的投影向量),R_{22}表示a_2-q_1R_{12}的大小,q_2就是a_2對應的標準正交基。

       進而,又從a_3 除去與 a_1和 a_2平行的兩個分量,再進行標準正交化

q_1,q_2,....q_n為列向量的矩陣Q與A之間有下列關係:

A=QR

方法三:採用Givens旋轉的QR分解

 Givens旋轉也可以用來計算QR分解。以4*3的矩陣為例說明Givens QR分解的思想