• ベストアンサー

固有値・固有ベクトル:Excelでの求め方

固有値・固有ベクトル:Excelでの求め方 固有値と固有ベクトルをExcelで求めたいのですが,どうやったらいいのでしょうか?ちなみに,行列は実数です.

質問者が選んだベストアンサー

  • ベストアンサー
  • 2ac0uO
  • ベストアンサー率60% (9/15)
回答No.1

Excel の、というよりはアルゴリズムの問題になります。 繰り返し計算になりますので、手計算をすると少し面倒ですが、最初にひな形を作って、それをコピーすれば、Excel でも繰り返し計算をする事が可能です。 Excel で行列計算を記述する方法は理解していると言う前提でお話しします。 A     を n×n の行列 λi(i=1→n)を固有値 Xi(i=1→n)を固有ベクトル(列ベクトル)とします。 更に、下記の関係があるとします。 |λ1|≧|λ2|≧|λ3|≧・・・・・≧|λn| 任意のベクトルをYとすると、Yは以下の様に表記可能です。 Y=Σ[i=1→n]αi・Xi ここで、 A・Y=Σ[i=1→n]αi・A・Xi    =Σ[i=1→n]αi・λi・Xi これを m 繰り返すと、 A^m・Y=Σ[i=1→n]αi・λi^m・Xi |λ1| が一番大きいですから、相対的にX1の寄与が大きくなり、X1 のスカラ倍に収束して行きますので、最初にYに適当な初期値を設定して計算を繰り返し、適当なところで切り上げて絶対値が最大の固有値と固有ベクトルを取得します。 続いて、大きい方から m(m<n)の固有値と固有ベクトルが取得出来たとすると、下記の計算で行列Bを計算します。 (tXj は Xj の転置行列) B=A-Σ[j=1→m]λi・Xj・tXj ここで、Xj・tXj・Xi を計算すると、X は固有ベクトルですので、 i=j の時、Xi i≠j の時、ゼロ となります。 その為、 B・Y=Σ[i=1→n]αi・(A-Σ[j=1→m]λi・Xj・tXj)・Xi    =Σ[i=1→n]αi・λi・Xi - Σ[j=1→m]αi・λi・Xi    =Σ[i=(m+1)→n]αi・λi・Xi これを繰り返すと、(m+1)番目の固有ベクトルのスカラ倍に収束して行きます。 このアルゴリズムは、固有値の絶対値が同じで正負が逆のものが存在すると、振動が発生してしまうとか、 固有値の絶対値が非常に接近しているとなかなか収束しないと言う問題がありますし、計算を進めていくと計算誤差が累積していきますが、 相対的に絶対値の大きな固有値を得るには有用だと思います。 別の方法としては、行列Aのトレースを取りながら足し算とかけ算を繰り返し、固有方程式を n 次方程式にして、Newton の逐次近似方等で固有値を計算すると言う方法もあります・