数値解析 第14回 (4) 累乗法に関する注意

複素数が必要な場合

 複素行列、あるいは実行列でも固有値が複素数の場合の注意です。
Rem.11 累乗法・デフレーションで複素数が必要な場合は次の2点を修正します:
  1. 標準内積の定義は複素共役が必要で
    $\dps{(\xxx,\yyy)=\sum_{i=1}^n\,\overline{x_i}\,y_i}$
    となります。
  2. Alg.6 2° の終了条件は
    ( $\vvv$ ≒ 旧$\,\vvv$ ) or ( $\vvv$ ≒ $-$旧$\,\vvv$ )
    では駄目で、
    $\vvv$ ≒ ( 旧$\,\vvv$ の或るスカラー倍 )
    あるいは
    成分比 $\dps{\left(\frac{v_i}{\small{\mbox{旧}}\,v_i}\right)}$ がほぼ一定
    とします。これは、複素ベクトルは「複素数倍しても同じ方向だと考える」からです。

絶対値の等しい固有値がある場合の工夫

 例えば回転の行列など、 実行列が複素数の固有値 $\lambda$ を持つときは、 その複素共役 $\overline{\lambda}$ も固有値になり、
$\big|\,\overline{\lambda}\,\big| = \big|\,\lambda\,\big|$
ゆえ、Th.9 の条件 $(\sharp)$ が満たされません。 しかし、次の工夫により「累乗法&デフレーション」作戦が使えるようになります。
工夫 
  1. 複素乱数 $\alpha$ を取る。
  2. $B=A+\alpha E$ とおく。
  3. $B$ に「累乗法&デフレーション」を適用して、$B$ の固有値・固有ベクトル
    $(\mu_j,\www_j)$  ( $j=1,2,\cdots,n$ )
    を求める。
  4. $\lambda_j=\mu_j-\alpha$ とおく。
  5. $\vvv_j=\www_j$ とおく。
 実際、 \begin{align} A\vvv_j=(B-\alpha E)\www_j &=B\www_j-\alpha\www_j \\ &=\mu_j\www_j-\alpha\www_j =(\mu_j-\alpha)\www_j=\lambda_j\vvv_j \\ \end{align} ゆえ $(\lambda_j,\vvv_j)$ は $A$ の固有値・固有ベクトルになります。 そして $\alpha$ が乱数なので、高い確率で $\mu_j=\lambda_j+\alpha$ たちの絶対値は全て異なります。