2 複数の固有値の求め方

前章の方法では最小の固有値しか求められないが,少し工夫するといくつかの固 有値を求められるようになる. これには,実対称一般化固有値問題の特性を利用する. すなわち,固有値問題の固有ベクトル $ \boldsymbol{x}_1, \boldsymbol{x}_2, \cdots ,\boldsymbol{x}_n$ において,

$\displaystyle (\boldsymbol{x}_i, \boldsymbol{A} \boldsymbol{x}_j) = 0$ $\displaystyle    (\boldsymbol{x}_i, \boldsymbol{B} \boldsymbol{x}_j) = 0$    
  $\displaystyle ( i \neq j )$    

という性質である.つまり,固有ベクトルは行列 $ \boldsymbol{A}, \boldsymbol{B}$をはさんで直 交していると言える. 従って,いくつか小さい順から固有値が分かっていれば,それらと直交するベク トルをさがすことで次の固有値が得られる.

ベクトル $ \boldsymbol{a}, \boldsymbol{b}$の直交化は次の式で与えられる.

$\displaystyle \tilde{\boldsymbol{a}} = \boldsymbol{a} - \frac{(\boldsymbol{a}, \boldsymbol{b})}{(\boldsymbol{b}, \boldsymbol{b})} \boldsymbol{b}$ (10)

$ \tilde{\boldsymbol{a}}$ $ \boldsymbol{a}$から $ \boldsymbol{b}$の成分を抜き出したものである. このように,必要ない成分を抜き出すことができる.

いま,すでに小さい方から固有値がいくつか求められていて,その固有ベクトル が $ \boldsymbol{x}_1, \cdots , \boldsymbol{x}_k$だとする. ここから,次に小さい固有値を求めようとする.この求めるべき固有ベクトルは, $ \boldsymbol{A}\boldsymbol{x}_1, \cdots , \boldsymbol{A}\boldsymbol{x}_k ,
\boldsymbol{B}\boldsymbol{x}_1, \cdots , \boldsymbol{B}\boldsymbol{x}_k$ と直交していることが分かる.従って,これらの成分を抜き出しながら共役勾配 法で固有値を求めていけばよい.

その手順を以下に示す.

  1. $ \boldsymbol{x}_0$をランダム関数などを使い,適当に決める.
  2. $ \boldsymbol{x}_0$を直交化
  3. $ \boldsymbol{g}_0$をもとめ,それを直交化
  4. $ \boldsymbol{p}_0 =
-\boldsymbol{g}_0$とする.
  5. $ \boldsymbol{p}_0$を直交化
  6. $ i=0$
  7. $ \boldsymbol{x}_{i+1} = \boldsymbol{x}_i + \alpha_{i} \boldsymbol{p}_i$
  8. $ \boldsymbol{x}_{i+1}$を直交化
  9. $ \boldsymbol{g}_{i+1}$をもとめ,それを直交化
  10. $ \boldsymbol{p}_ {i+1}= -\boldsymbol{g}_{i+1} + \beta _{i} \boldsymbol{p}_{i}$
  11. $ \boldsymbol{p}_{i+1}$を直交化
  12. 収束判定をして,収束が十分でなければ$ i=i+1$として,7に戻る.
ここで,`` $ \boldsymbol{x}$を直交化''という表記は,

$\displaystyle \boldsymbol{x} \leftarrow$ $\displaystyle \boldsymbol{x} - \frac{(\boldsymbol{x}, \boldsymbol{Ax}_1)}{(\bol...
..., \boldsymbol{Bx}_1)}{(\boldsymbol{Bx}_1, \boldsymbol{Bx}_1)} \boldsymbol{Bx}_1$    
  $\displaystyle \vdots$    
$\displaystyle \boldsymbol{x} \leftarrow$ $\displaystyle \boldsymbol{x} - \frac{(\boldsymbol{x}, \boldsymbol{Ax}_k)}{(\bol...
..., \boldsymbol{Bx}_k)}{(\boldsymbol{Bx}_k, \boldsymbol{Bx}_k)} \boldsymbol{Bx}_k$    

という操作を表す.( $ \boldsymbol{x}_1, \cdots , \boldsymbol{x}_k$はすでに求められている固 有ベクトル)


ホームページ: Yamamoto's laboratory
著者: 夏井拓也
natui takuya
平成17年12月22日


no counter