近接固有値に属する固有ベクトルの計算困難性
非常に近い値をもつ固有値を近接固有値という.一般に,近接固有値に属する固有ベクトルを数値計算することは困難な課題である.
まずは具体的な例でこれを確認してみよう.
行列の近接固有値
実数 に対して実対称行列 を
と定める.解析的に計算される の固有値は
となる. のときに となるので,この2つの固有値は近接固有値と呼ばれる.
ここで,
は解析的に計算される の固有ベクトルとなる.
ただし, の符号によって固有値・固有ベクトルの対応関係が変化することに注意する必要がある.
実際は,
のときは, が行列の固有対となり,
のときは, が行列の固有対となる.
のときは固有値は重複となり, が固有空間の基底となる.
図1に の近傍において,固有値のに関するグラフを示した.
のグラフ
近接固有値に属する固有ベクトルの数値計算
近接固有値に属する固有ベクトルを計算することが難しいことを感覚的に理解するために,
固有値が近接する場合()における行列の固有ベクトルをべき乗法を使って計算機で求めてみよう.
べき乗法とは,行列 の最大固有値に対応する固有ベクトルを反復計算により近似的に求める手法である.
初期ベクトル を適当に選び,以下の反復を行う:
ここで はユークリッドノルムを表す.
理論的には十分な反復回数により は の最大固有値に対応する固有ベクトルに収束することが知られているが,
固有値間の差が非常に小さい場合には丸め誤差の影響が顕著となり,計算結果が真の解から回転してしまう問題が生じる.
以下に,実際の数値計算環境下での検証例について述べる.
ここでは,の場合に行列
を考える.解析的に求めた固有値は
であり,最大固有値 に対応する真の固有ベクトルは
となる.
数値実験では,MATLAB の double 精度環境下においてべき乗法による反復計算を用い,
最大反復回数を 回,収束判定の閾値を と設定した.
また,入力パラメータ は から まで対数スケールで変化させ,各 に対して
べき乗法により計算された固有ベクトル と真の固有ベクトル との間の回転角
を求めた.図2は横軸を (対数スケール),縦軸を回転角 (度)として,
べき乗法により求めた近似固有ベクトルと解析的に求めた真の固有ベクトルとの間の回転角の変化を示すものである.
近似固有ベクトルの回転角
がに近づくに従って回転角が大きくなっていることを見ると,この方法ではが小さいときに正しい近似固有ベクトルを計算できていないことが分かる.
手法や設定により異なるものの,丸め誤差がある限り普通の数値計算では固有ベクトルを正しく計算できるの下限が存在する.この意味で,数値計算を用いて「すべての に対してとなる」近似固有ベクトルを求めることはill-posed problem である.
ディリクレラプラシアンの近接固有値
角度に対して,次の頂点を持つ三角形を考えよう:
三角形領域において,ラプラシアンのディリクレ固有値問題は次のように定式化される:
ここで関数 は固有関数と呼ばれ, は固有値と呼ばれる.
ただし,2次元領域におけるラプラシアンは次式で定義される微分作用素である:
スペクトル定理によりラプラシアンの固有値は可算無限個存在し,非減少の実数列をなす.
三角形領域は連結であるから第一固有値は単純あり,固有値の列を次のように表すことができる:
固有値の近似計算
のとき,三角形は正三角形となる,
が正三角形に近いときの固有値の挙動に注目してみよう.
McCartin により,のときこれらの固有値は重複()となることが知られている.
図3はのとき,数値計算によりに関するのグラフを描いたものである.
で重複固有値が存在し,その近傍でが近接固有値となっていることが分かる.
第2,3固有値の挙動
固有値の差分商公式と近接固有値に属する固有関数の数値計算
偏微分方程式の数値解法の1つである有限要素法を用いると,ラプラシアンの固有値問題 (1) は離散化され,固有値・固有関数の数値計算を次のような形式の一般化固有値問題を解くことに帰着できる:
ただし,は同じサイズを持つ正定値対称行列である.
正三角形に近い形状をもつ三角形領域の場合のように,もとの固有値問題 (1) の固有値が近接する場合には,行列固有値問題 (2)を解くことによって得られる近似固有値も近接し,本ノートの前半で説明したようなことと同様の現象が起こり,通常の方法ではうまく固有ベクトルを計算することができない.(したがって,固有関数もうまく計算できない.)
ところが「固有値の差分商公式」を用いて計算結果を補正することにより,近接固有値に属する固有関数もうまく数値計算することができる(かもしれない).
注意書き1:ここから先に書かれていることは別に論文で裏付けられたことではないので注意(ここから前もそうですが)
固有値の差分商公式と近似固有関数の補正
差分商公式の主張を説明する.
パラメータ に対して,頂点が である三角形領域を とする.
固有値 が において重複している,つまり
であると仮定する.
ここで, を固有値 に対応する固有空間とする.
かつ のとき, を の摂動とする.記号を簡略化するために,,,および と表す.固有値 に対応する線形独立な固有関数をそれぞれ とする.
また,を三角形領域 を に写す線形変換とする.
()として,
と定める.
さらに,固有値の差分商を
と表し,次のように 行列 を定義する:
これらの設定のもと,以下の差分商公式が成り立つ:
固有値の差分商公式 ([プレプリント [endoliu]])
であると仮定する. の基底を , の基底を とし,次のように定義する:
このとき,差分商 は次の行列固有値問題の 番目の固有値となる:
さらに,摂動された領域 における固有関数 に対して,次が成り立つ:
ここで, は固有値に対応する固有ベクトルとなる.
注意書き2:ここから先に書かれていることは引用しているプレプリントの結果とは関係ありません
さて前節では,正三角形ではが近接固有値となる事に触れた.
以下では,正三角形 の頂点を方向にだけ摂動してできる三角形領域における固有関数を正しく数値計算する例を与える.
アルゴリズム
以下のアルゴリズムで正しくを数値計算することができる:
- 正三角形領域 において,通常の有限要素法で近似固有関数求めて,とする.
- 摂動された三角形領域 において,通常の有限要素法で近似固有関数求めて,とする.
- 上で求めたとをつかって定理1に現れる行列を求める.
- 固有値問題を解いて固有対 を計算する.
- 摂動された三角形領域 における現状の近似固有関数を次式を用いて補正する:
数値計算結果
図4はに対して,摂動された三角形領域における固有関数を数値計算して描画したものである.
ただし,図4の上段は通常の有限要素法を使って求めた近似固有関数,下段は固有値の差分商公式を使って求めた近似固有関数である.
計算にはすべての場合に同じメッシュを用いた.
求めた近似固有関数
通常の有限要素法による計算では,あたりで固有関数の回転が起こっているように見えるのに対して,新しいアルゴリズムでは正確に計算できているように見える.
固有値が単純である限り,固有関数はに関して連続に動くはずなので上段の計算結果が正しいということはあり得なさそうである.