雅可比旋转

来自testwiki
跳转到导航 跳转到搜索

数值线性代数中,雅可比旋转n内积空间的二维线性子空间的旋转 Qk,在用做相似变换的时候,被选择来置零 n×n 实数对称矩阵 A 的非对角元素的对称对:

AQkTAQk=A.
[**akkakaka**][**a'kk00a'**]

它是雅可比特征值算法的核心运算,它是数值上稳定的并适合用并行计算实现。

注意到只有 A 的行 k 和 ℓ 与列 k 和 ℓ 受到影响,并且 A′ 将保持对称。还有给 Qk 的明显的矩阵很少被计算,转而计算辅助值,A 也有效率和数值上稳定的方式更新。但是,为了引用,我们写矩阵为

Qk=[10cssc01].

就是说,除了四个元素之外,Qk 是一个单位矩阵,两个在对角线上(qkkqℓℓ 都等于 c) 而两个位于远离对角的位置上(qkQk 分别等于 s 和 −s)。这里的 c = cos ϑ 而 s = sin ϑ 对于某个角度 ϑ;但是对于应用这种旋转,这个角度自身是不需要的。使用克罗内克δ符号,矩阵元素可以写为

qij=δij+(δikδjk+δiδj)(c1)+(δikδjδiδjk)s.

假设 h 是不为 k 或 ℓ 的索引(它们自身必须是不同的)。类似的更改过程在代数上写为

a'hk=a'kh=cahksah
a'h=a'h=cah+sahk
a'k=a'k=(c2s2)ak+sc(akka)=0
a'kk=c2akks2a2scak
a'=c2akks2a+2scak

数值稳定计算

要确定需要更改的数量,我们必须解远离对角的元素为零的方程Template:Harv。这蕴涵了

c2s2sc=aakkak.

设 β 是这个数量的一半,

β=aakk2ak.

如果 ak 是零,我们可以停止而不需要进行更改,因此我们永不除以零。设 t 是 tan ϑ。则通过一些三角恒等式我们简约这个方程为

t2+2βt1=0.

为了稳定性我们选择解

t=sgn(β)|β|+β2+1.

以此我们可以获得 cs

c=1t2+1
s=ct

尽管我们可以使用前面给出的代数更改等式,重写它们会更好。设

ρ=s1+c,

所以 ρ = tan(ϑ/2)。则修订后的修改方程为

a'hk=a'kh=ahks(ah+ρahk)
a'h=a'h=ah+s(ahkρah)
a'k=a'k=0
a'kk=akktak
a'=a+tak

如前面提及的,我们永不需要明确的计算旋转角度 ϑ。事实上,我们可以通过只保留三个值 k, ℓ 和 t 来重新生成由 Qk 确定的对称更改,带有 t 对零旋转设置为零。

参见

引用