在數值線性代數 中,雅可比旋轉 是 n 維內積空間 的二維線性子空間的旋轉 Q k ℓ ,在用做相似變換 的時候,被選擇來置零 n ×n 實數 對稱矩陣 A 的非對角 元素的對稱對:
A
↦
Q
k
ℓ
T
A
Q
k
ℓ
=
A
′
.
{\displaystyle A\mapsto Q_{k\ell }^{T}AQ_{k\ell }=A'.\,\!}
[
∗
⋯
∗
⋱
a
k
k
⋯
a
k
ℓ
⋮
⋮
⋱
⋮
⋮
a
ℓ
k
⋯
a
ℓ
ℓ
⋱
∗
⋯
∗
]
→
[
∗
⋯
∗
⋱
a
k
k
′
⋯
0
⋮
⋮
⋱
⋮
⋮
0
⋯
a
ℓ
ℓ
′
⋱
∗
⋯
∗
]
{\displaystyle {\begin{bmatrix}{*}&&&\cdots &&&*\\&\ddots &&&&&\\&&a_{kk}&\cdots &a_{k\ell }&&\\\vdots &&\vdots &\ddots &\vdots &&\vdots \\&&a_{\ell k}&\cdots &a_{\ell \ell }&&\\&&&&&\ddots &\\{*}&&&\cdots &&&*\end{bmatrix}}\to {\begin{bmatrix}{*}&&&\cdots &&&*\\&\ddots &&&&&\\&&a'_{kk}&\cdots &0&&\\\vdots &&\vdots &\ddots &\vdots &&\vdots \\&&0&\cdots &a'_{\ell \ell }&&\\&&&&&\ddots &\\{*}&&&\cdots &&&*\end{bmatrix}}}
它是雅可比特徵值算法 的核心運算,它是數值上穩定 的並適合用並行計算 實現。
注意到只有 A 的行 k 和 ℓ 與列 k 和 ℓ 受到影響,並且 A ′ 將保持對稱。還有給 Q k ℓ 的明顯的矩陣很少被計算,轉而計算輔助值,A 也有效率和數值上穩定的方式更新。但是,為了引用,我們寫矩陣為
Q
k
ℓ
=
[
1
⋱
0
c
⋯
s
⋮
⋱
⋮
−
s
⋯
c
0
⋱
1
]
.
{\displaystyle Q_{k\ell }={\begin{bmatrix}1&&&&&&\\&\ddots &&&&0&\\&&c&\cdots &s&&\\&&\vdots &\ddots &\vdots &&\\&&-s&\cdots &c&&\\&0&&&&\ddots &\\&&&&&&1\end{bmatrix}}.}
就是說,除了四個元素之外,Q k ℓ 是一個單位矩陣,兩個在對角線上(q kk 和 q ℓℓ 都等於 c ) 而兩個位於遠離對角的位置上(q k ℓ 和 Q ℓk 分別等於 s 和 −s )。這裏的 c = cos ϑ 而 s = sin ϑ 對於某個角度 ϑ;但是對於應用這種旋轉,這個角度自身是不需要的。使用克羅內克δ 符號,矩陣元素可以寫為
q
i
j
=
δ
i
j
+
(
δ
i
k
δ
j
k
+
δ
i
ℓ
δ
j
ℓ
)
(
c
−
1
)
+
(
δ
i
k
δ
j
ℓ
−
δ
i
ℓ
δ
j
k
)
s
.
{\displaystyle q_{ij}=\delta _{ij}+(\delta _{ik}\delta _{jk}+\delta _{i\ell }\delta _{j\ell })(c-1)+(\delta _{ik}\delta _{j\ell }-\delta _{i\ell }\delta _{jk})s.\,\!}
假設 h 是不為 k 或 ℓ 的索引(它們自身必須是不同的)。類似的更改過程在代數上寫為
a
h
k
′
=
a
k
h
′
=
c
a
h
k
−
s
a
h
ℓ
{\displaystyle a'_{hk}=a'_{kh}=ca_{hk}-sa_{h\ell }\,\!}
a
h
ℓ
′
=
a
ℓ
h
′
=
c
a
h
ℓ
+
s
a
h
k
{\displaystyle a'_{h\ell }=a'_{\ell h}=ca_{h\ell }+sa_{hk}\,\!}
a
k
ℓ
′
=
a
ℓ
k
′
=
(
c
2
−
s
2
)
a
k
ℓ
+
s
c
(
a
k
k
−
a
ℓ
ℓ
)
=
0
{\displaystyle a'_{k\ell }=a'_{\ell k}=(c^{2}-s^{2})a_{k\ell }+sc(a_{kk}-a_{\ell \ell })=0\,\!}
a
k
k
′
=
c
2
a
k
k
−
s
2
a
ℓ
ℓ
−
2
s
c
a
k
ℓ
{\displaystyle a'_{kk}=c^{2}a_{kk}-s^{2}a_{\ell \ell }-2sca_{k\ell }\,\!}
a
ℓ
ℓ
′
=
c
2
a
k
k
−
s
2
a
ℓ
ℓ
+
2
s
c
a
k
ℓ
{\displaystyle a'_{\ell \ell }=c^{2}a_{kk}-s^{2}a_{\ell \ell }+2sca_{k\ell }\,\!}
數值穩定計算
要確定需要更改的數量,我們必須解遠離對角的元素為零的方程(Golub & Van Loan 1996 ,§8.4) harv error: no target: CITEREFGolubVan_Loan1996 (help ) 。這蘊涵了
c
2
−
s
2
s
c
=
a
ℓ
ℓ
−
a
k
k
a
k
ℓ
.
{\displaystyle {\frac {c^{2}-s^{2}}{sc}}={\frac {a_{\ell \ell }-a_{kk}}{a_{k\ell }}}.}
設 β 是這個數量的一半,
β
=
a
ℓ
ℓ
−
a
k
k
2
a
k
ℓ
.
{\displaystyle \beta ={\frac {a_{\ell \ell }-a_{kk}}{2a_{k\ell }}}.}
如果 a k ℓ 是零,我們可以停止而不需要進行更改,因此我們永不除以零。設 t 是 tan ϑ。則通過一些三角恆等式我們簡約這個方程為
t
2
+
2
β
t
−
1
=
0.
{\displaystyle t^{2}+2\beta t-1=0.\,\!}
為了穩定性我們選擇解
t
=
sgn
(
β
)
|
β
|
+
β
2
+
1
.
{\displaystyle t={\frac {\operatorname {sgn}(\beta )}{|\beta |+{\sqrt {\beta ^{2}+1}}}}.}
以此我們可以獲得 c 和 s 為
c
=
1
t
2
+
1
{\displaystyle c={\frac {1}{\sqrt {t^{2}+1}}}\,\!}
s
=
c
t
{\displaystyle s=ct\,\!}
儘管我們可以使用前面給出的代數更改等式,重寫它們會更好。設
ρ
=
s
1
+
c
,
{\displaystyle \rho ={\frac {s}{1+c}},}
所以 ρ = tan(ϑ/2)。則修訂後的修改方程為
a
h
k
′
=
a
k
h
′
=
a
h
k
−
s
(
a
h
ℓ
+
ρ
a
h
k
)
{\displaystyle a'_{hk}=a'_{kh}=a_{hk}-s(a_{h\ell }+\rho a_{hk})\,\!}
a
h
ℓ
′
=
a
ℓ
h
′
=
a
h
ℓ
+
s
(
a
h
k
−
ρ
a
h
ℓ
)
{\displaystyle a'_{h\ell }=a'_{\ell h}=a_{h\ell }+s(a_{hk}-\rho a_{h\ell })\,\!}
a
k
ℓ
′
=
a
ℓ
k
′
=
0
{\displaystyle a'_{k\ell }=a'_{\ell k}=0\,\!}
a
k
k
′
=
a
k
k
−
t
a
k
ℓ
{\displaystyle a'_{kk}=a_{kk}-ta_{k\ell }\,\!}
a
ℓ
ℓ
′
=
a
ℓ
ℓ
+
t
a
k
ℓ
{\displaystyle a'_{\ell \ell }=a_{\ell \ell }+ta_{k\ell }\,\!}
如前面提及的,我們永不需要明確的計算旋轉角度 ϑ。事實上,我們可以通過只保留三個值 k , ℓ 和 t 來重新生成由 Q k ℓ 確定的對稱更改,帶有 t 對零旋轉設置為零。
參見
引用