householder变换
定义
-
对于任意的模相等的非零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)TH 𝒙 = 𝒙 − 𝟐 ( 𝒙 − 𝒚 ) ( 𝒙 − 𝒚 ) T ‖ 𝒙 − 𝒚 ‖ 𝟐 𝟐 x H𝒙=𝒙− \frac{𝟐(𝒙−𝒚)(𝒙−𝒚)^T}{‖𝒙−𝒚‖_𝟐^𝟐 }x Hx=x−‖x−y‖222(x−y)(x−y)Tx
通过化简就可以得到
H x = y ; Hx=y; Hx=y;
QR分解
- QR分解就是把一个矩阵A分解为一个正交矩阵乘上一个三角矩阵
由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为上三角矩阵
QR分解
- QR方法是反复对矩阵进行QR分解迭代求特征值的方法
记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相同的特征值。
- 显然,为了求得A的特征值,只需序列能趋向于分块三角矩阵(对角线上的块为一阶或二阶方阵)即可,从而可求出A 的特征值。