固有値問題の実例をやってみます。
]a=:4 4$1 3 5 7 1r3 1 1 5 1r5 1 1 3 1r7 1r5 1r3 1 1 3 5 7 1r3 1 1 5 1r5 1 1 3 1r7 1r5 1r3 1
この4x4の行列はExcelで学ぶAHP入門という本の最初の例で、スポーツクラブを選択する際に、費用、施設・環境、交通の便、スタッフの態度の4つの評価基準があってその重み付けをするものです。この本は幾何平均を使っていて、固有値で解いた数字と比べて十分な近似値であると言っています。そのことを言う際に固有値法で求めた数字が書いてありますので、APL/J言語で実行して同じ数字になるかどうか確かめます。(ちなみにExcelで固有値が求められるようなことが書いてあるサイトや本がたくさん出ていますが、わたしの知る限りではできないと思います。できるのだったらマイクロソフトが関数を作ってあるでしょう。自信はありませんが。)
さて、表の見方です。
例えば費用と施設・環境を比べて、どちらかと言えば費用の方を重視する、というので(1,2)の欄に3が入っています。同様に交通の便と比べてかなり重視するので5、スタッフの態度と比べて圧倒的に重視するので7。対照欄には逆数を記入します。
まずdet(A - λI)=0を使って固有値λを求めますが、前回のプログラムNaigenを使って今回の場合だと3次方程式の係数を求めます。
4 Naigen a _256r1575 _184r105 0 _4 1
この結果をp.(ピードット、ポリノミアル)に与えると、3次方程式の根としてλが求まります。
p. 4 Naigen a +-+-----------------------------------------------------------+ |1|4.10628 _0.0076404j0.659506 _0.0076404j_0.659506 _0.0909947| +-+-----------------------------------------------------------+
この4.10628を使って、今度はAV=λVからVの要素である重み付けを求めます。
Vの要素をx y z (1-x-y-z)とすればVの要素の合計が1になりますので、つぎのように求めました。
]b=:4 4$4.10628 0 0 0 0 4.10628 0 0 0 0 4.10628 0 _4.10628 _4.10628 _4.10628 0 4.10628 0 0 0 0 4.10628 0 0 0 0 4.10628 0 _4.10628 _4.10628 _4.10628 0 a - b _3.10628 3 5 7 0.333333 _3.10628 1 5 0.2 1 _3.10628 3 4.24914 4.30628 4.43961 1 (0 0 0 4.10628) %. (a - b) 0.58033 0.204679 0.158151 0.0568392 mp=:+/ . * v=:(0 0 0 4.10628) %. (a - b) a mp v 2.383 0.84047 0.649414 0.233396 4.10628 * v 2.383 0.84047 0.649414 0.233398
さて上記のテキストに乗っている固有値法による数字は0.5803 0.2047 0.1582 0.0568なので、一桁少ないですが、一致しています。