矩陣分解

吉文斯旋轉

Givens 旋轉是一種只在某一個座標平面內起作用、而讓其餘所有方向保持不變的旋轉。除了在第 i、j 行與列處嵌入一個 2x2 旋轉塊 [c, -s; s, c](滿足 c^2 + s^2 = 1)之外,它就是單位矩陣。它旋轉 (i, j) 平面,其餘一切不動。

它在分解中的任務是外科手術式的:選好角度,使某個特定元素變為零。Householder 反射一次清空主元下方整列,而 Givens 旋轉恰好清空一個元素。這種精確性是優點而非弱點。當矩陣稀疏,或本已近乎三角時,你不希望破壞現有的零;而一次 Givens 旋轉只觸及兩列。

這使 Givens 成為結構化問題的首選工具:特徵值演算法中的三對角與 Hessenberg 矩陣、帶狀系統,尤其是在矩陣發生小改動後更新分解——用寥寥幾次旋轉把已近三角的矩陣重新推回三角,而不必從頭重新分解。

和所有旋轉一樣它是正交的,因此保持範數,並與 Householder 共享數值穩定性。經典的提醒是:c 與 s 的公式必須小心計算以避免溢出;標準做法是在求斜邊之前先按兩個元素中較大者作縮放。

G = [c, -s; s, c], choose c, s so that G [a; b] = [r; 0], r = sqrt(a^2 + b^2)

一次旋轉把元素 b 置零,同時保持二維向量的長度 r。

經驗法則:稠密的從頭 QR 用 Householder(運算更少);稀疏、結構化或增量式的工作用 Givens(外科手術式,且易於平行)。

又稱
plane rotationGivens transformation吉文斯变换