二分法
ハウスホルダ変換の結果として行列Aと相似な三重対角行列 A~が得られる。
A の固有値は方程式
det(λI - A~) = 0 --------------------------------------------[1]
の解として与えられる。この方程式は一般的にn次の方程式で、直接解を求めるのは困
難であるため、以下に示すような二分法を用いて解く。
まず、
g1(λ) = λ - α1
for k=2,3,...,n
if gk-1(λ)=0
gk(λ) > 0, gk+1 = λ - αk+1
else
gk(λ) = λ - αk - βk-12 / gk-1(λ)
を実行し、n 個の数値
g1(λ),g2(λ),....,gn(λ) ------------------[2]
を計算する。Sturm定理によれば、[2]の内の0または負であるものの個数 N(λ)が
λより大きいA~の固有値の個数に等しい。
またGeschgorin定理よると、行列 A~ の全ての固有値は次式で与えられる区間 (a,b)
内に存在する。
-a = b = Max{ |αi| + |βi| + |βi-1| } --------[3]
従って、次のようなアルゴリズムによって、固有値を含む区間 (a,b) を狭くしてい
き,固有値λkを求めることができる。(λkはA~の小さい方から数えたk番目の固
有値である、つまり
λ1(λ) < λ2(λ) < ... < λk < ... < λn(λ) )
a と b の初期値を [3]で決める。
c = (a + b)/2;
N(c)を計算する;
for(i=0; i < R; i++ )
if ( N(c) > n-k )
a = c; /* cはλkより小さい */
else
b = c; /* cはλkより大きい */
λk = c;
ここでは、Rは繰り返す回数である。倍精度浮動小数点数の場合,上記の計算を
R=50回繰り返せば十分に小さい誤差で固有値が求まる。
戻る