对于任意的模相等的非零n维向量x,y,一定可以找到一个householder矩阵使x变换到y,
即
H x = y ; Hx=y; Hx=y;
且H的定义如下:
H = I − 2 u u T , u T u = 1 ; H=I-2uu^T,u^Tu=1; H=I−2uuT,uTu=1;
因此,容易验证H是一个正交矩阵,正交矩阵的性质是矩阵的逆等于矩阵的转置 ,多说一点,正交变换是很稳定的变换,不会改变矩阵的性质;
证明:由于u的模为1,因此可以通过x,y构造u,
即
u = ( x − y ) ∣ ∣ x − y ∣ ∣ 2 u= \frac{(x-y)}{||x-y||_2} u=∣∣x−y∣∣2(x−y)
相应的可以求出H,
H = I − 2 ( x − y ) ( x − y ) T ∣ ∣ x − y ∣ ∣ 2 2 H=I-\frac{2(x-y)(x-y)^T}{||x-y||_2^2} H=I−∣∣x−y∣∣222(x−y)(x−y)T
H = − ( − ) ( − ) T ‖ − ‖ x H=− \frac{(−)(−)^T}{‖−‖_^ }x Hx=x−‖x−y‖222(x−y)(x−y)Tx
通过化简就可以得到
H x = y ; Hx=y; Hx=y;
由householder变换的性质,可以使n维非零向量
a 1 = [ a 1 , a 2 , ⋯ , a n ] T a1=[a1,a2,\cdots,a_n]^T a1=[a1,a2,⋯,an]T
变换为
[ × , 0 , 0 , ⋯ , 0 ] T [×,0,0,\cdots,0]^T [×,0,0,⋯,0]T
因此可以对矩阵A按列进行分块,即
A = [ a 1 , a 2 , ⋯ , a n ] A=[a1,a2,\cdots,a_n] A=[a1,a2,⋯,an]
a i = [ a i 1 , a i 2 , ⋯ , a i n ] T a_i=[ai1,ai2,\cdots,ain]^T ai=[ai1,ai2,⋯,ain]T
首先对a1进行变换,变换为
[ × , 0 , 0 , ⋯ , 0 ] T [×,0,0,\cdots,0]^T [×,0,0,⋯,0]T
设householder矩阵为H1(注:“×”和H1都是可以通过计算得到,这里主要是介绍操作过程,帮助理解,计算过程就不赘述)
那么就可以得到
H 1 A = H 1 [ a 1 , a 2 , ⋯ , a n ] = ∣ × a 12 ∗ ⋯ a 1 n ∗ 0 a 22 ∗ ⋯ a 2 n ∗ ⋮ ⋮ ⋱ ⋮ 0 a n 2 ∗ ⋯ a n n ∗ ∣ H1A=H1[a1,a2,\cdots,a_n]=\left| \begin{matrix} × & a^*_{12} & \cdots & a^*_{1n}\\ 0 & a^*_{22} & \cdots & a^*_{2n}\\ \vdots & \vdots & \ddots & \vdots\\ 0& a^*_{n2} & \cdots & a^*_{nn} \\ \end{matrix} \right| H1A=H1[a1,a2,⋯,an]=∣∣∣∣∣∣∣∣∣×0⋮0a12∗a22∗⋮an2∗⋯⋯⋱⋯a1n∗a2n∗⋮ann∗∣∣∣∣∣∣∣∣∣
重复上次方法对
∣ a 22 ∗ ∗ ⋯ a 2 n ∗ ∗ ⋮ ⋱ ⋮ a n 2 ∗ ∗ ⋯ a n n ∗ ∣ \left| \begin{matrix} a^{**}_{22} & \cdots & a^{**}_{2n}\\ \vdots & \ddots & \vdots\\ a^{**}_{n2} & \cdots & a^*_{nn} \\ \end{matrix} \right| ∣∣∣∣∣∣∣a22∗∗⋮an2∗∗⋯⋱⋯a2n∗∗⋮ann∗∣∣∣∣∣∣∣
的第一列进行变换,设householder矩阵为H2*(注以下计算用到了分块的方法,分成四块)
就可以得到
∣ 1 0 0 H 2 ∗ ∣ H 1 A = H 2 H 1 [ a 1 , a 2 , ⋯ , a n ] = ∣ × × a 13 ∗ ∗ ⋯ a 1 n ∗ ∗ 0 × a 23 ∗ ∗ ⋯ a 2 n ∗ ∗ 0 0 a 33 ∗ ∗ ⋯ a 3 n ∗ ∗ ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 a n 3 ∗ ∗ ⋯ a n n ∗ ∗ ∣ \left| \begin{matrix} 1 & 0\\ 0& H2^* \\ \end{matrix} \right|H1A=H2H1[a1,a2,\cdots,a_n]=\left| \begin{matrix} × & × & a^{**}_{13}&\cdots & a^{**}_{1n}\\ 0 & ×& a^{**}_{23}&\cdots & a^{**}_{2n}\\ 0 & 0&a^{**}_{33}& \cdots & a^{**}_{3n}\\ \vdots & \vdots & \vdots & \ddots&\vdots\\ 0& 0&a^{**}_{n3}& \cdots & a^{**}_{nn} \\ \end{matrix} \right| ∣∣∣∣100H2∗∣∣∣∣H1A=H2H1[a1,a2,⋯,an]=∣∣∣∣∣∣∣∣∣∣∣×00⋮0××0⋮0a13∗∗a23∗∗a33∗∗⋮an3∗∗⋯⋯⋯⋱⋯a1n∗∗a2n∗∗a3n∗∗⋮ann∗∗∣∣∣∣∣∣∣∣∣∣∣
重复上面的步骤,做n-1次变换后,就可以得到一个上三角矩阵
H n − 1 H n − 2 ⋯ H 1 A = ∣ × × × ⋯ × 0 × × ⋯ × 0 0 × ⋯ × ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ × ∣ H_{n-1}H_{n-2}\cdots\ H1A=\left| \begin{matrix} × & × & ×&\cdots & ×\\ 0 & ×& ×&\cdots & ×\\ 0 & 0&×& \cdots & ×\\ \vdots & \vdots & \vdots & \ddots&\vdots\\ 0& 0&0& \cdots & ×\\ \end{matrix} \right| Hn−1Hn−2⋯ H1A=∣∣∣∣∣∣∣∣∣∣∣×00⋮0××0⋮0×××⋮0⋯⋯⋯⋱⋯×××⋮×∣∣∣∣∣∣∣∣∣∣∣
由于H是正交矩阵,因此多个正交矩阵相乘依然是正交矩阵,并且正交矩阵的逆等于矩阵的转置,所以可以得到
A = Q R A=QR A=QR
Q为正交矩阵,R为上三角矩阵
记A为A1,对A1进行QR分解: A1=Q1 R1,然后将矩阵Q1、 R1逆序相乘,得A2=R1 Q1;再以A2重复上述步骤得到A_3,如此类推,
A K + 1 = Q K R K = Q K − 1 A K Q K = ⋯ = Q K − 1 Q K − 1 − 1 ⋯ Q 1 − 1 A 1 Q 1 Q 2 ⋯ Q K A_{K+1}=Q_{K}R_{K}={Q_{K}}^{-1}A_{K}Q_{K}=\cdots\ = {Q_{K}}^{-1}{Q_{K-1}}^{-1}\cdots\ Q_{1}^{-1} A_{1}Q_{1}Q_{2}\cdots\ Q_{K} AK+1=QKRK=QK−1AKQK=⋯ =QK−1QK−1−1⋯ Q1−1A1Q1Q2⋯ QK
因此A1与A_k+1相似,特征值相等;从矩阵A开始迭代得到一个矩阵序列{ A1,A2,……Ak},这个矩阵序列中的每个矩阵都与原矩阵A相似,即都有与A相同的特征值。