From: Masahiro Sato Date: 2004-02-29T16:45:59+09:00 Subject: [ruby-list:39310] Re: 固有値、固有ベクトルの計算 佐藤です。 Vine2.5において、これらをインストールして、 blas http://l5web.laser5.co.jp/rpm2html/7.1/blas-3.0-9.i386.html lapack http://l5web.laser5.co.jp/rpm2html/7.1/lapack-3.0-9.i386.html g2c ftp://ftp.ring.gr.jp/pub/linux/Vine/VinePlus/2.5/RPMS/i386 /sbin/ldconfigをやってからインストールしたらうまく行きました。 西浦さんのzheevtes.rbもエラーなく実行できました。 ただ、申し分けないのですが、使い方について教えてください。 練習として 1 0 -1 1 2 1 2 2 3 この行列の固有値、固有ベクトルを求めようとして require 'fortranarray' original_H = FortranArray.new(2, 3, 3, 4, 'D', 'GE','lower').set_all(0.0) original_H[1,1] = 1.0 original_H[1,2] = 0.0 original_H[1,3] = -1.0 original_H[2,1] = 1.0 original_H[2,2] = 2.0 original_H[2,3] = 1.0 original_H[3,1] = 2.0 original_H[3,2] = 2.0 original_H[3,3] = 3.0 p original_H ary_H = original_H.clone w = ary_H.zheev('V') # w -> eigenvalues, ary_H -> eigenvectors p w p ary_H というスクリプトをつくってみました。 結果は # 2, 1..3, 1..3, 1..4, 1..3, 'D', 'GE', 'LOWER', 'NON-UNIT', 0, 0 1 1 2 0 2 2 -1 1 3 # 1, 1..3, 1..3, 'D', 'GE', 'UPPER', 'NON-UNIT', 0, 0 -1.909515966155951 1.390699272883653 4.518816693272298 # 2, 1..3, 1..3, 1..4, 1..3, 'D', 'GE', 'LOWER', 'NON-UNIT', 0, 0 -0.6647535743902899 0 0.2708020827196853 0 0.6962534864042075 2 -0.4656102811879915 0 0.57864919010172 となりました。 固有値は1,2,3となるはずなのですが、 そうなっていないようです。使い方が間違っているからだと 思いますが、どうスクリプトを書いていいのかわかりません。 もうしわけないですが教えていただけないでしょうか。