絶対値の最小固有値の計算法

行列のAの固有値とAの逆行列$A^{-1}$の固有値は以下の関係式を持っています。

$$ Ax=\lambda x, \Rightarrow A^{-1} x = \frac{1}{\lambda} x $$

よって、行列Aの絶対値の最小固有値を算出するために、$A^{-1}$の絶対値の最大固有値を算出すれば良いです。

絶対値の最小固有値の計算に使用される反復計算法です。

$$ x^{(k)} = A^{-1} x^{(k-1)}, k=1,2,3,\cdots $$

上記の反復計算では、実際に以下の連立一次方程式を解いています。

$$ A x^{(k)} = x^{(k-1)} $$

ここで、既知のベクトル$x^{(k-1)}$に対して、未知のベクトル$x^{(k)}$を求めます。

反復計算の効率な計算法

実際の計算では、反復計算で必要となる「連立一次方程式を解く」ことを効率化するために、AのLU分解を利用して、計算加速化を行います。

まず、計算の準備として、AのLU分解を行います。次に、反復計算では、以下の方程式を解きます。 $$ L y = x^{(k-1)}, \quad Ux^{(k)} = y,\quad (k=1,2,3,\cdots) $$

補足:

MATLABの命令luを使って、行列のAのLU分解ができます。

演習1

以下の行列の絶対値の最小固有値を求めよ。

 A=diag(ones(5,1)*2) - diag(ones(4,1),1) - diag(ones(4,1),-1)

一般的な固有値の計算方法 (オプション)

最大固有値と最小固有値以外の固有値を計算するために、固有値をシフトする方法が使用されます。

固有値問題$Ax=\lambda x$に対して、$\tilde{A}=A+\mu I_n$の固有値$\tilde{\lambda}$は以下のようになります。 $$ \tilde{A} x = \tilde{\lambda} x = (\lambda + \mu) x $$ ここで,$I_n$は$n\times n$の単位行列です。

上記の固有値シフトの方法を利用して、指定される値$\hat{\lambda}$の近くにある固有値の計算を検討してみます。

$\hat{\lambda}$の近くにある固有値$\lambda_k$に対して、$\lambda_k - \hat{\lambda}$ 以下の固有値問題の絶対値の最小固有値となります。

$$ \tilde{A} = A - \hat{\lambda} I_n, ~~~ \tilde{A} x = \tilde{\lambda} x = (\lambda_k - \hat{\lambda}) x $$

よって、上記の行列$\tilde{A}$の絶対値の最小固有値を計算することによって、$\hat{\lambda}$の近くにある固有値$\lambda_k$も算出できます。