数値解析 第15回 (4) ヤコビ法の発想
ヤコビ法の発想
Th.15,
Rem.16 より、実対称行列 $A$ は、
$P = R_1 \, R_2 \, \cdots \, R_t$
( ただし $R_i$ は $R(p,q;\theta)$ の形の回転の行列 )
と書ける直交行列 $P$ を用いて
$P^{-1} \, A \, P = {}^tP \, A \, P = \dps{\mat{ccc}{\lambda_1 && \\ & \ddots & \\ && \lambda_n}}$
のように対角化できます。
\begin{align}
{}^tP \, A \, P
&= {}^t(R_1 \, R_2 \, \cdots \, R_t)\, A \, (R_1 \, R_2 \, \cdots \, R_t) \\
&= ({}^tR_t \, \cdots \, {}^tR_2\, {}^tR_1)\, A \, (R_1 \, R_2 \, \cdots \, R_t) \\
&= {}^tR_t \, (\cdots \, ({}^tR_2\, ({}^tR_1\, A \, R_1) \, R_2) \, \cdots )\, R_t \tag{$\sharp$} \\
\end{align}
ですから
$(\sharp)$ が対角行列になるように、上手に回転の行列 $R_1$, $R_2$, $\cdots$ を選べばよいのではないか
という発想ができます。
さらに、
2次元の場合 には $R(\theta)=R(1,2;\theta)$ の形の行列で $(1,2)$-成分を $0$ にできたことから
作戦 17 Th.7 のように角 $\theta$, $\theta'$, $\cdots$ を適切に選んで、順番に
- $R(1,2;\theta)$ で $(1,2)$-成分を $0$ に
- $R(1,3;\theta')$ で $(1,3)$-成分を $0$ に
$\vdots$
- $R(2,3;\theta'')$ で $(2,3)$-成分を $0$ に
- $R(2,4;\theta''')$ で $(2,4)$-成分を $0$ に
$\vdots$
すればいいんじゃないの?
と、最初は思いますね。やってみましょう。
Rem.18 $A$ が対称行列なので、Prop.5 より ${}^tP\,A\,P$ の形の行列も対称行列になることに注意しておいてください。
作戦 17 の実行例
Ex.19
$\dps{A = \mat{ccc}{
1 & 2 & 3 \\
2 & 5 & 6 \\
3 & 6 & 7}}$
に対して 作戦 17 を実行してみる。
まず $(1,2)$-成分をターゲットにして
\begin{align}
\theta
&=\frac{1}{2}\arctan\left(\frac{2 a_{12}}{a_{11} - a_{22}}\right) \\
&=\frac{1}{2}\arctan\left(\frac{2 \times 2}{1 - 5}\right)
= -0.3926990817, \\
R_1
&= R(1, 2; \theta)
=\mat{rrr}{
0.9238795325 & 0.3826834324 & 0 \\
-0.3826834324 & 0.9238795325 & 0 \\
0\phantom{xxxx} & 0\phantom{xxxx} & 1 }
\end{align}
とおきます。$A_1={}^tR_1 \, A \, R_1$ を計算すれば
$\require{color}$
\begin{align}
A_1
&= {}^tR_1 \, A \, R_1 \\
&=\mat{rrr}{
0.1715728753 & \textcolor{red}{-0.0000000000} & 0.4755380033 \\
\textcolor{red}{-0.0000000000} & 5.8284271247 & 6.6913274922 \\
0.4755380033 & 6.6913274922 & 7.0000000000 }
\end{align}
となって
$(1,2)$-成分が $0$ になりました。
次は $(1,3)$-成分をターゲットにして
\begin{align}
\theta'
&=\frac{1}{2}\arctan\left(\frac{2 a'_{12}}{a'_{11} - a'_{22}}\right) \\
&=\frac{1}{2}\arctan\left(\frac{2 \times 0.4755380033}{0.1715728753 - 7}\right) \\
&= -0.0691957668, \\
R_2
&= R(1, 3; \theta') \\
&=\mat{rrr}{
0.9976069280 & 0 & 0.0691405612 \\
0\phantom{xxxx} & 1 & 0\phantom{xxxx} \\
-0.0691405612 & 0 & 0.9976069280 }
\end{align}
とおき、$A_2={}^tR_2 \, A' \, R_2$ を計算します。
$\require{color}$
\begin{align}
A_2
&= {}^tR_2 \, A' \, R_2 \\
&=\mat{rrr}{
0.1386150404 & \textcolor{red}{-0.4626421379} & \textcolor{blue}{-0.0000000000} \\
\textcolor{red}{-0.4626421379} & 5.8284271247 & 6.6753146637 \\
\textcolor{blue}{-0.0000000000} & 6.6753146637 & 7.0329578349 }
\end{align}
おやおや、
$(1,3)$-成分は $0$ になりました が、
せっかく $0$ にした $(1,2)$-成分が $0$ でなくなってしまいました。
問題点 作戦 17 では一度 $0$ にした非対角成分が $0$ でなくなってしまう。
こちらを叩けばあちらが顔を出す、いわゆる
モグラ叩き状態 になってしまいます。
しかし、それでも上手くいくよ、というのが次のページです。