矩阵分解

吉文斯旋转

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吉文斯变换