ページ 11

固有値計算のC言語プログラム

Posted: 2016年10月19日(水) 15:52
by STR
固有値の計算を行うプログラムを作成したいです。

行列は
 ・ 100×100 でも計算可能
 ・ double型
 ・ 非対称行列
の条件を満たしています。

この行列を計算するためのC言語(C++)プログラムが必要なのですが、探してみましたが、アルゴリズムはあってもプログラムは落ちていません。
アルゴリズムからプログラムに落とす高等技術を持っていないためプログラム作成ができません。

有益なWebページなど知っている方是非、回答よろしくお願いいたします

VisualStudio 2012Expressを使っています

Re: 固有値計算のC言語プログラム

Posted: 2016年10月19日(水) 16:36
by みけCAT
オフトピック
プログラムの書き方じゃなくて完成品でよければSpaghetti Sourceで…と思ったが、
試してみたところ100x100どころか3x3でも結果が返ってこなかった。
なんでだろう?

【追記】
(double)rand() / RAND_MAXのかわりに
  • 0
  • 1
  • i+j
を入れた時は結果が返ってきましたが、
  • i-j
を入れた時は時間内に結果が返ってきませんでした。

なお、実行には上記「固有値・固有ベクトル」以外に、「行列」と「LU分解」のコード、そして

コード:

#include <vector>
#include <cmath>
uding namespace std;
が必要なようです。

Re: 固有値計算のC言語プログラム

Posted: 2016年10月19日(水) 16:57
by みけCAT
STR さんが書きました:この行列を計算するためのC言語(C++)プログラムが必要なのですが、探してみましたが、アルゴリズムはあってもプログラムは落ちていません。
アルゴリズムからプログラムに落とす高等技術を持っていないためプログラム作成ができません。
高等技術じゃなくて普通の技術なら持っているのですか?
まず見つけたもの(アルゴリズムが載っているサイト?)を提示して、
「どこまで出来て、どこがわからないか」を具体的に質問していただけると答えやすいと思います。

Re: 固有値計算のC言語プログラム

Posted: 2016年10月19日(水) 17:21
by STR
http://ums.futene.net/wiki/LinSol/qr/

こちらに載っている分解方法?を利用したものが
http://ameblo.jp/zrfcsctd/entry-11429974948.html
こちらに載っているような気がしたので使いたかったのですが、
どうやって固有値を求めるのかわからないために、条件を満たした行列の固有値を求めれるのかどうかもわからない状態です。

普通の技術というか、ソートアルゴリズムくらいはおおざっぱですが理解しているつもりなので、初心者ではありませんというくらいのものです。わかりにくく申し訳ございませんでした。

Re: 固有値計算のC言語プログラム

Posted: 2016年10月20日(木) 10:37
by STR
補足なのですが、

Eigenというライブラリ?を発見しました。
http://eigen.tuxfamily.org/index.php?title=Main_Page
これを利用して、固有値を求めようと思うのですが、日本語の参考のページが少ないためてこずっています。

何か参考になるページを知っている方、またはソースコードを知っている方ぜひご教授お願いします