- ベストアンサー
固有値を求めたい。
固有値って|A-λE|=0として求めますよね。 具体的に求めたいのはAが9*9の場合なのですが、 これって、λの9乗とかがでてきてしまいます・・ EXCELを使っているのですが、 このような場合の固有値の求め方を教えてください。 もしくは、固有値を求めるプログラムののっているHPがあれば教えてください。 一応、C言語ならなんとか使えます。 もしマセマティカを使わないと求まりませんと言うのなら・・ 頑張ってマセマティカでやってみます。 お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
λの9次方程式を解くことになりますから,解析的には不可能です. 解析的に解けるのは4次以下の方程式であることがアーベルによって示されています. したがって,全く一般の場合(行列の要素が文字で与えられている,など) はお手上げです. ただし,行列が何らかの対称性を持っていれば, 対称性で分類して行列の次数を落とすことができます. つまり,基底を適当に線形変換することにより, 行列が,例えば 3×3,3×3,2×2,1×1,にブロック対角化できる,など. . 行列要素が数値で与えられているなら, 固有値や固有ベクトルを数値的に計算する方法はかなり発達しています. ○ 科学技術計算ハンドブック 戸川隼人著,サイエンス社 http://aurora.es.hokudai.ac.jp/yanagita/html/tips/togawa.html ○ ニューメリカルレシピ・イン・シー - C言語による数値計算のレシピ William H. Press, Saul A. Teukolsky, William, T. Vetterling, Brian P. Flannery 丹慶勝市・奥村晴彦訳 技術評論社 ○ マトリクスの数値計算 戸川 隼人 著,オーム社 など参照されてはいかがでしょうか. C言語,プログラム,行列,固有値, ぐらいのキーワードで検索しますといっぱい出てきますので, そのまま使えるCのソースがあるかもしれません. また,mathematica が使えるなら, A = {{1, -2, 3.5, -0.9, 1.2}, {2, -1, 1.4, -1.33, -0.1}, {-1.2, 3, 2.5, 6, -0.14}, {1.2, -4.3, -2.1, -0.9, 0.21}, {0.1, 2.6, -2.4, -0.8, 1.1}} とやって行列を定義し(面倒なので5×5にしました), Eigenvalues[N[A]] とやれば数値的に固有値を出してくれます. なお,mathematica に似たフリーのソフトに MuPAD というのがあります. http://momonga.t.u-tokyo.ac.jp/~paoon/OriginalDoc/MuPAD.html からたどってみてください. MuPAD は私自身は使ったことはありません.
その他の回答 (1)
- Nandayer
- ベストアンサー率47% (20/42)
大きい次数の行列の固有値を計算するのは、それだけで大変な問題です。 私は、数値計算のプログラムを利用する技術者ですが、次の本が重宝しています。 W.H/Press 他 著「Numerical Recipes in C 日本語版」技術評論社 もし、これからも NyaoT1980 さんがいろいろな数値計算のプログラムを利用しなければならなくなるようでしたら、購入をお勧めします。(学生さんにはちょっと高いかもしれませんが。) また、この際 Mathematica, MATLAB などのツールの使い方に慣れておいても、損はしないと思います。いずれも学生さんが個人で購入できるようなツールではないので、研究室などで利用できるのであれば、今のうちに慣れてしまいましょう。 どちらがお薦めかというと、それは NyaoT1980 さんの今の境遇とこれからの進路によります。しかし、単にあたえられた行列の固有値を求めたいだけであれば、ツールを使うほうがラクです。
お礼
ありがとうございました。 大学の卒論を書く際に固有値を求めたいなーと思った次第です。 次数を落とした方がよさそうですね。 主成分分析とかをすればよいでしょうか。 頑張ってみます。 ちなみに、来年は就職なので卒論で使ったらもう使わないと思います・・
お礼
ありがとうございます。 一応数値として求めたいので、 マセマティカでやってみようと思います。 マセマティカは学校でしか使えないんです・・ MuPADも参考にさせて頂きますね。 でも次元を下げた方がいいですね・・やっぱり。 ありがとうございました。