next up previous
Next: 3 レポート課題13 Up: 2 行列の解析的な性質 Previous: 2.2.1 種明かし

2.3 絶対値最大の固有値を求める -- 冪乗法

(ここは時間の関係で入れないでしょう。)


簡単のため $ n$ 次正方行列 $ A$ が対角化可能で、 その固有値を $ \lambda_1$ , $ \cdots$ , $ \lambda_n$ , それらに属する固有ベクトルを $ u_1$ , $ \cdots$ , $ u_n$ とします。 さらに $ \vert\lambda_1\vert$ は他の固有値の絶対値よりも大きいと仮定します:

$\displaystyle \vert\lambda_1\vert>\vert\lambda_i\vert$   $\displaystyle \mbox{($i=2,3,\cdots,n$)}$

任意のベクトル $ x\in\C^n$

$\displaystyle x=c_1 u_1+c_2 u_2+\cdots c_n u_n
$

と展開できますが、$ A^k$ を作用させると

$\displaystyle A^k x=c_1 A^k u_1+c_2 A^k u_2+\cdots C_n A^k u_n
=c_1 \lambda_1^k u_1+c_2 \lambda_2^k u_2+\cdots C_n \lambda_n^k u_n.
$

$ k$ が大きいとき、 右辺第 $ 1$ 項は右辺の他の項と比べて大きくなることが分かります (ただし $ c_1\ne 0$ とする)。$ k$ を十分大きくすると、 右辺第2項以下は第1項と比べて無視できるほど小さくなると期待できます。 すると $ A^k x$ $ u_1$ の定数倍、 すなわち $ \lambda_1$ に属する固有ベクトルに近くなるはずです。

以上のことを MATLAB による計算で確かめるためには、 $ A^k x$ がオーバーフローすることを防ぐため、 代りにその長さで割った $ \dsp\frac{A^k x}{\Vert A^k x\Vert}$ を作ればよいでしょう。

以下では素朴に $ A$ をかけていくことで $ \dsp\frac{A^k x}{\Vert A^k x\Vert}$ を求めています。

» x=ones(5,1)  
» for i=1:100  
> y=a*x  
> x=y/norm(y)  
> end  
» a*x ./ x a*x の各成分を対応する x の成分で割ってみる
» eig(a) ← 念のため eig()a の固有値を調べて比較

線形代数では、固有値を固有多項式の根として特徴づけますが、 固有多項式を数値計算で解くのは多くの場合難しいので、 行列の問題のまま各種の反復法を用いるのが普通です。 上で見た方法は『冪乗法』と呼ばれ、多くの固有値計算方法の基礎となっています。


next up previous
Next: 3 レポート課題13 Up: 2 行列の解析的な性質 Previous: 2.2.1 種明かし
桂田 祐史
2012-07-11