数値解析 第14回 (4) 累乗法に関する注意
複素数が必要な場合
複素行列、あるいは実行列でも固有値が複素数の場合の注意です。
Rem.11 累乗法・デフレーションで
複素数が必要な場合 は次の2点を修正します:
- 標準内積の定義には複素共役が必要で
\dps(\xxx,\yyy)=∑ni=1¯xiyi
となります。
- Alg.6 のループの終了条件は
( \vvv ≒ 旧\vvv ) or ( \vvv ≒ −旧\vvv )
では駄目で、
\vvv ≒ ( 旧\vvv の或るスカラー倍 )
あるいは
成分比 \dps(vi旧vi) がほぼ一定
とします。これは、複素ベクトルは「複素数倍しても同じ方向だと考える」からです。
絶対値の等しい固有値がある場合の工夫
例えば回転の行列など、
実行列が複素数の固有値
λ を持つときは、
その複素共役
¯λ も固有値になり、
|¯λ|=|λ|
ゆえ、
Th.9 の条件
(♯) が満たされません。
しかし、次の工夫により「累乗法&デフレーション」作戦が使えるようになります。
工夫
- 複素乱数 α を取る。
- B=A+αE とおく。
- B に「累乗法&デフレーション」を適用して、B の固有値・固有ベクトル
(μj,\wwwj) ( j=1,2,⋯,n )
を求める。
- λj=μj−α とおく。
- \vvvj=\wwwj とおく。
実際、
A\vvvj=(B−αE)\wwwj=B\wwwj−α\wwwj=μj\wwwj−α\wwwj=(μj−α)\wwwj=λj\vvvj
ゆえ
(λj,\vvvj) は
A の固有値・固有ベクトルになります。
そして
α が乱数なので、高い確率で
μj=λj+α たちの絶対値は全て異なります。