House holder reflections and Givens rotations
Householder反射和Givens旋轉是兩種常見的線性代數方法,用于將一個矩陣分解為正交矩陣(Q)和上三角矩陣?,即QR分解。它們在數值線性代數中非常重要,特別是在求解線性方程組和特征值問題中。以下是這兩種方法的原理及它們與QR分解的關系:
Householder反射 (Householder Reflection)
Householder反射是一種利用反射將一個向量轉換為另一個向量的方法。具體來說,Householder反射可以用于將一個向量變成一個特定方向的向量,比如將一個向量變成與標準基向量平行的向量。這種方法的主要特點是,它可以在很少的運算步驟中完成這一操作,因此在數值計算中非常高效。
原理:
- 給定一個向量 x x x,我們希望將其轉換為與標準基向量 e 1 e_1 e1? 平行的向量。為此,我們構造一個Householder矩陣 H H H。
- Householder矩陣 H H H 的形式為:
H = I ? 2 v v T v T v H = I - 2 \frac{vv^T}{v^Tv} H=I?2vTvvvT?
其中, v v v 是一個特定構造的向量,使得 H x Hx Hx 與 e 1 e_1 e1? 平行。
步驟:
- 選擇 v = x + sign ( x 1 ) ∥ x ∥ 2 e 1 v = x + \text{sign}(x_1) \|x\|_2 e_1 v=x+sign(x1?)∥x∥2?e1?,其中 ∥ x ∥ 2 \|x\|_2 ∥x∥2? 是 x x x 的2-范數, sign ( x 1 ) \text{sign}(x_1) sign(x1?) 是 x 1 x_1 x1? 的符號。
- 計算 H H H 并使用 H H H 對原矩陣 A A A 進行反射,得到一個新的矩陣 A ′ A' A′ ,其中v對應的列被轉換為與標準基向量平行,即列中對應行的元素不為0,其余元素均為0。
通過多次應用Householder反射,我們可以將矩陣 A A A 轉換為一個上三角矩陣 R R R,同時累積這些反射矩陣以形成正交矩陣 Q Q Q。
Givens旋轉 (Givens Rotation)
Givens旋轉是一種通過旋轉將一個向量的某個分量置零的方法。這種方法非常適合用于稀疏矩陣,因為它可以有選擇地僅對矩陣的某些元素進行操作。
原理:
- Givens旋轉通過構造一個旋轉矩陣 G G G 來對兩個元素進行旋轉,使得其中一個元素變為零。
- Givens旋轉矩陣 G ( i , j , θ ) G(i,j,\theta) G(i,j,θ) 的形式為:
G = [ 1 ? c s 1 ? s c ? 1 ] G = \begin{bmatrix} 1 & & & & & \\ & \ddots & & & & \\ & & c & & s & \\ & & & 1 & & \\ & & -s & & c & \\ & & & & & \ddots \\ & & & & & & 1 \\ \end{bmatrix} G= ?1???c?s?1?sc???1? ?
其中, c = cos ? ( θ ) c = \cos(\theta) c=cos(θ) 和 s = sin ? ( θ ) s = \sin(\theta) s=sin(θ)。
步驟:
- 選擇 θ \theta θ 使得 c = a a 2 + b 2 c = \frac{a}{\sqrt{a^2 + b^2}} c=a2+b2?a? 和 s = b a 2 + b 2 s = \frac{b}{\sqrt{a^2 + b^2}} s=a2+b2?b?,其中 a a a 和 b b b 是矩陣中要被操作的兩個元素。
- 通過旋轉矩陣 G G G 對矩陣進行操作,將其中一個元素置零。
eg:
G = [ c s ? s c ] , v = [ a b ] G= \begin{bmatrix} c & s\\ -s & c \end{bmatrix}, v=\begin{bmatrix} a\\b\end{bmatrix} G=[c?s?sc?],v=[ab?]
則可得:
G v = [ c o s θ ? a + s i n θ ? b ? s i n θ ? a + c o s θ ? b ] = [ a + b 0 ] Gv=\begin{bmatrix} cos\theta *a+sin\theta *b\\-sin\theta *a+cos\theta *b\end{bmatrix} =\begin{bmatrix} a+b\\0\end{bmatrix} Gv=[cosθ?a+sinθ?b?sinθ?a+cosθ?b?]=[a+b0?]
通過多次應用Givens旋轉,可以將矩陣 A A A 轉換為上三角矩陣 R R R,同時累積這些旋轉矩陣以形成正交矩陣 Q Q Q。
Householder反射和Givens旋轉與QR分解的關系
這兩種方法都可以用于QR分解,但它們有各自的優缺點:
- Householder反射通常在處理密集矩陣時更有效,因為它每次操作可以消去一個向量中的多個元素,從而減少總的運算次數。
- Givens旋轉在處理稀疏矩陣時更有效,因為它可以有選擇地僅對矩陣的某些元素進行操作,從而保持矩陣的稀疏性。
總體來說,QR分解的目標是通過一系列的正交變換(Householder反射或Givens旋轉)將原矩陣 A A A 分解為一個正交矩陣 Q Q Q 和一個上三角矩陣 R R R:
A = Q R A = QR A=QR
其中, Q Q Q 是一個正交矩陣, R R R 是一個上三角矩陣。Householder反射和Givens旋轉提供了實現這一目標的兩種不同方法。
參考鏈接
《2013 Matrix Computations 4th》