Processing math: 100%

数値解析 第14回 (2) 累乗法

累乗法のアルゴリズム

 上述の通り、手計算どおりの計算を実現するためにはたくさんの処理が必要です。 そこで、シンプルな反復法で固有値・固有ベクトルを計算する方法を紹介しましょう。
Th.5 対角化可能な n 次行列 A の固有値が条件
|λ1|>max(|λ2|,,|λn|) ()
を満たすとする  このとき、次のアルゴリズムによって (λ1,v1) を求めることができる。
 λ1 は、 絶対値が他の固有値よりも真に大きいので「最大固有値」と呼びます。
Algorithm 6
入力:n 次正方行列 A
出力:A の最大固有値 λ と、λ に対する固有ベクトル v

  v= ( ランダムな単位ベクトル )
  while True
    新v= ( Av 方向の単位ベクトル )
    if ( v ≒ 旧v ) or ( vv )
      break
  λ=(v,Av)(v,v)
  (λ,v) を出力

ただし (x,y) は標準内積 (x,y)=ni=1xiyi を表します。

実行例

Ex.7 3次行列 A=( 647 433 738 ) の場合

Th.5 の証明

 A は対角化可能と仮定していますので、 固有ベクトルたち v1, , vn は一次独立であり、 v の初期値 v0
v0=ni=1civi=c1v1++cnvn
と書くことができます。すると
Avj=λjvj
ゆえ、k=1,2, に対して Akv0=c1Akv1++cnAkvn=c1λk1v1++cnλknvn=λk1(c1v1+c2(λ2λ1)kv2++cn(λnλ1)kvn) が成り立ちます。仮定 () より
limk(λjλ1)k=0   ( j2 )
が成り立ちますので、 Akv0 の方向は k のとき v1 方向へ収束してゆきます。 Alg.6vAkv0 方向の単位ベクトルですので、 ( ±1 倍を除いて ) v1 方向の単位ベクトルに収束します。
 あとは
Av=λv
から
(v,Av)(v,v)=(v,λv)(v,v)=λ(v,v)(v,v)=λ
が得られます。