1. HouseHolder 理论分析
HouseHolder变换的目的是为了将向量
x
1
x_1
x1通过镜面反射的方式,在保持大小不变的情况下,变成在x轴上的向量
x
2
x_2
x2具体如下图所示:
HouseHolder变换和Givens变换的目的是一致的,都是通过反射,旋转的方式,将任意向量
x
1
x_1
x1变到x轴上,形成向量
x
2
x_2
x2
- 由图可得向量之间关系如下
x 1 = x 2 + 2 w (1) x_1=x_2+2w\tag{1} x1=x2+2w(1) - 做一个辅助单位向量
w
0
w_0
w0,使得
w
0
w_0
w0平行于w,
∣
w
0
∣
=
1
|w_0|=1
∣w0∣=1
-
w
w
w的长度可以计算如下:
w 0 T x 1 = ∣ w 0 ∣ ∣ x 1 ∣ cos θ 2 (2) w_0^Tx_1=|w_0||x_1|\cos{\theta_2}\tag{2} w0Tx1=∣w0∣∣x1∣cosθ2(2)
∣ w ∣ = ∣ x 1 ∣ cos θ 2 (3) |w|=|x_1|\cos{\theta_2}\tag{3} ∣w∣=∣x1∣cosθ2(3) - 方程1,3结合可得如下:
x 1 = x 2 + 2 w 0 T x 1 ∣ w 0 ∣ w 0 (4) x_1=x_2+2\frac{w_0^Tx_1}{|w_0|}w_0\tag{4} x1=x2+2∣w0∣w0Tx1w0(4) - 因为我们定义
∣
w
0
∣
=
1
|w_0|=1
∣w0∣=1,并且
w
0
T
x
1
w_0^Tx_1
w0Tx1为一个数,所以在矩阵中可以任意调位置,即
x 1 = x 2 + 2 w 0 w 0 T x 1 (5) x_1=x_2+2w_0w_0^Tx_1\tag{5} x1=x2+2w0w0Tx1(5) - 整理可得如下
x 2 = x 1 − 2 w 0 w 0 T x 1 = ( I − 2 w 0 w 0 T ) x 1 (6) x_2=x_1-2w_0w_0^Tx_1=(I-2w_0w_0^T)x_1\tag{6} x2=x1−2w0w0Tx1=(I−2w0w0T)x1(6) - 变成常规大家熟悉的公式如下,u为单位向量
u = [ 1 0 0 ] (7) u=\begin{bmatrix}1\\\\0\\\\0\end{bmatrix}\tag{7} u= 100 (7)
y = ( I − 2 u u T ) x (8) y=(I-2uu^T)x\tag{8} y=(I−2uuT)x(8)
2. Householder 案例
2.1 Householder进行QR分解
A
=
Q
R
(9)
A=QR\tag{9}
A=QR(9)
A
=
[
1
2
0
1
1
0
3
1
1
0
3
2
1
2
0
2
]
(10)
A=\begin{bmatrix}1&2&0&1\\\\1&0&3&1\\\\1&0&3&2\\\\1&2&0&2\end{bmatrix}\tag{10}
A=
1111200203301122
(10)
从矩阵A中取出第一列
a
1
⃗
=
[
1
,
1
,
1
,
1
]
T
\vec{a_1}=[1,1,1,1]^T
a1=[1,1,1,1]T ,
∥
α
1
∥
2
=
1
2
+
1
2
+
1
2
+
1
2
=
2
\lVert \alpha_1\rVert_2=\sqrt{1^2+1^2+1^2+1^2}=2
∥α1∥2=12+12+12+12=2
u
1
⃗
=
a
1
⃗
−
α
1
e
1
⃗
∥
a
1
⃗
−
α
1
e
1
⃗
∥
(11)
\vec{u_1}=\frac{\vec{a_1}-\alpha_1\vec{e_1}}{\|\vec{a_1}-\alpha_1\vec{e_1}\|}\tag{11}
u1=∥a1−α1e1∥a1−α1e1(11)
e
1
⃗
=
[
1
,
0
,
0
,
0
]
T
(12)
\vec{e_1}=[1,0,0,0]^T\tag{12}
e1=[1,0,0,0]T(12)
- 带入可得:
u 1 ⃗ = 1 2 [ − 1 , 1 , 1 , 1 ] T (13) \vec{u_1}=\frac{1}{2}[-1,1,1,1]^T\tag{13} u1=21[−1,1,1,1]T(13) - 根据householder 来定义矩阵
H
1
H_1
H1
H 1 ⃗ = I ⃗ − 2 u 1 ⃗ ( u 1 ⃗ ) T (14) \vec{H_1}=\vec{I}-2\vec{u_1}(\vec{u_1})^T\tag{14} H1=I−2u1(u1)T(14) - 带入可得:
H 1 ⃗ = 1 2 [ 1 1 1 1 1 1 − 1 − 1 1 − 1 1 − 1 1 − 1 − 1 1 ] (15) \vec{H_1}=\frac{1}{2}\begin{bmatrix}1&1&1&1\\\\1&1&-1&-1\\\\1&-1&1&-1\\\\1&-1&-1&1\end{bmatrix}\tag{15} H1=21 111111−1−11−11−11−1−11 (15) - 第一次householder变换 ,目的是保证第一列只有存在第一个元素,其他位置为0:
H 1 ⃗ A = 1 2 [ 1 1 1 1 1 1 − 1 − 1 1 − 1 1 − 1 1 − 1 − 1 1 ] [ 1 2 0 1 1 0 3 1 1 0 3 2 1 2 0 2 ] (16) \vec{H_1}A=\frac{1}{2}\begin{bmatrix}1&1&1&1\\\\1&1&-1&-1\\\\1&-1&1&-1\\\\1&-1&-1&1\end{bmatrix}\begin{bmatrix}1&2&0&1\\\\1&0&3&1\\\\1&0&3&2\\\\1&2&0&2\end{bmatrix}\tag{16} H1A=21 111111−1−11−11−11−1−11 1111200203301122 (16)
H 1 ⃗ A = [ 2 2 3 3 0 0 0 − 1 0 0 0 0 0 2 − 3 0 ] (17) \vec{H_1}A=\begin{bmatrix}2&2&3&3\\\\0&0&0&-1\\\\0&0&0&0\\\\0&2&-3&0\end{bmatrix}\tag{17} H1A= 20002002300−33−100 (17) - 我们重新第一新的矩阵
A
2
A_2
A2
A 2 ⃗ = [ 0 0 − 1 0 0 0 2 − 3 0 ] (18) \vec{A_2}=\begin{bmatrix}0&0&-1\\\\0&0&0\\\\2&-3&0\end{bmatrix}\tag{18} A2= 00200−3−100 (18)
从矩阵 A 2 A_2 A2中取出第一列 a 2 ⃗ = [ 0 , 0 , 2 ] T \vec{a_2}=[0,0,2]^T a2=[0,0,2]T , ∥ α 2 ∥ 2 = 0 2 + 0 2 + 2 2 = 2 \lVert \alpha_2\rVert_2=\sqrt{0^2+0^2+2^2}=2 ∥α2∥2=02+02+22=2
u 2 ⃗ = a 2 ⃗ − α 2 e 1 ⃗ ∥ a 2 ⃗ − α 2 e 1 ⃗ ∥ (19) \vec{u_2}=\frac{\vec{a_2}-\alpha_2\vec{e_1}}{\|\vec{a_2}-\alpha_2\vec{e_1}\|}\tag{19} u2=∥a2−α2e1∥a2−α2e1(19)
e 1 ⃗ = [ 1 0 0 ] T (20) \vec{e_1}=\begin{bmatrix}1&0&0\end{bmatrix}^T\tag{20} e1=[100]T(20) - 带入相关参数可得:
u 2 ⃗ = 2 2 [ − 1 0 1 ] T (21) \vec{u_2}=\frac{\sqrt{2}}{2}\begin{bmatrix}-1&0&1\end{bmatrix}^T\tag{21} u2=22[−101]T(21)
H 2 ~ = I ⃗ − 2 u 2 ⃗ ( u 2 ⃗ ) T (22) \tilde{H_2}=\vec{I}-2\vec{u_2}(\vec{u_2})^T\tag{22} H2~=I−2u2(u2)T(22) - 代入可得如下:
H 2 ~ = [ 0 0 1 0 1 0 1 0 0 ] (23) \tilde{H_2}=\begin{bmatrix}0&0&1\\\\0&1&0\\\\1&0&0\end{bmatrix}\tag{23} H2~= 001010100 (23) - 同理可得
H
2
~
A
2
⃗
\tilde{H_2}\vec{A_2}
H2~A2
H 2 ~ A 2 ⃗ = [ 2 − 3 0 0 0 0 0 0 − 1 ] (24) \tilde{H_2}\vec{A_2}=\begin{bmatrix}2&-3&0\\\\0&0&0\\\\0&0&-1\end{bmatrix}\tag{24} H2~A2= 200−30000−1 (24)
H 2 ⃗ = [ 1 H 2 ~ ] = [ 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 ] (25) \vec{H_2}=\begin{bmatrix}1&\\\\&\tilde{H_2}\end{bmatrix}=\begin{bmatrix}1&0&0&0\\\\0&0&0&1\\\\0&0&1&0\\\\0&1&0&0\end{bmatrix}\tag{25} H2= 1H2~ = 1000000100100100 (25) - 依公式,我们定义R如下:
R ⃗ = H 2 ⃗ ( H 1 ⃗ A ⃗ ) = [ 2 2 3 3 0 2 − 3 0 0 0 0 0 0 0 0 − 1 ] (26) \vec{R}=\vec{H_2}(\vec{H_1}\vec{A})=\begin{bmatrix}2&2&3&3\\\\0&2&-3&0\\\\0&0&0&0\\\\0&0&0&-1\end{bmatrix}\tag{26} R=H2(H1A)= 200022003−300300−1 (26) - 依公式,我们定义Q如下:
Q ⃗ = H 1 ⃗ H 2 ⃗ = 1 2 [ 1 1 1 1 1 − 1 − 1 1 1 − 1 1 − 1 1 1 − 1 − 1 ] (27) \vec{Q}=\vec{H_1}\vec{H_2}=\frac{1}{2}\begin{bmatrix}1&1&1&1\\\\1&-1&-1&1\\\\1&-1&1&-1\\\\1&1&-1&-1\end{bmatrix}\tag{27} Q=H1H2=21 11111−1−111−11−111−1−1 (27)
3. 结论:
- householder的意义是通过househoulder变换,可以将矩阵A 变成一个正交矩阵Q和上三角矩阵R
A = Q R (28) A=QR\tag{28} A=QR(28)
A = [ 1 2 0 1 1 0 3 1 1 0 3 2 1 2 0 2 ] (29) A=\begin{bmatrix}1&2&0&1\\\\1&0&3&1\\\\1&0&3&2\\\\1&2&0&2\end{bmatrix}\tag{29} A= 1111200203301122 (29)
Q ⃗ = 1 2 [ 1 1 1 1 1 − 1 − 1 1 1 − 1 1 − 1 1 1 − 1 − 1 ] (30) \vec{Q}=\frac{1}{2}\begin{bmatrix}1&1&1&1\\\\1&-1&-1&1\\\\1&-1&1&-1\\\\1&1&-1&-1\end{bmatrix}\tag{30} Q=21 11111−1−111−11−111−1−1 (30)
R ⃗ = [ 2 2 3 3 0 2 − 3 0 0 0 0 0 0 0 0 − 1 ] (31) \vec{R}=\begin{bmatrix}2&2&3&3\\\\0&2&-3&0\\\\0&0&0&0\\\\0&0&0&-1\end{bmatrix}\tag{31} R= 200022003−300300−1 (31)