簡単のため 次正方行列 が対角化可能で、 その固有値を , , , それらに属する固有ベクトルを , , とする。 さらに は他の固有値の絶対値よりも大きいとする。
任意のベクトル は
と展開できるが、 を作用させると
が大きいとき、右辺第 項は右辺の他の項と比べて大きくなることが 分かる (ただし とする)。 を十分大きくすると、 右辺第2項以下は第1項と比べて無視できるほど小さくなるだろう。 すると は の定数倍、すなわち に属する固有ベク トルに近くなるはずである。
以上のことを Octave による計算で確かめるためには、 がオーバーフローすることを防ぐため、 代りにその長さで割った を作ればよい。
以下では素朴に をかけていくことで を 求めている。
octave:5> x=ones(n,1)
octave:5> for i=1:100
> y=a*x
> x=y/norm(y)
> end
octave:5> a*x ./ x
← a*x の各成分を対応する x の成分で割ってみる
octave:5> eig(a)
← 念のため eig() で a の固有値を調べて比較
線形代数では、固有値を固有多項式の根として特徴づけるが、 普通固有多項式を数値計算で解くのは難しいので、 行列の問題のまま各種の反復法を用いることになる。 上で見た方法は『冪乗法』と呼ばれ、多くの方法の基礎となっている。
2017-06-19