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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
STR

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

#1

投稿記事 by STR » 8年前

固有値の計算を行うプログラムを作成したいです。

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

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

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

VisualStudio 2012Expressを使っています

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 8年前

オフトピック
プログラムの書き方じゃなくて完成品でよければSpaghetti Sourceで…と思ったが、
試してみたところ100x100どころか3x3でも結果が返ってこなかった。
なんでだろう?

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

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

コード:

#include <vector>
#include <cmath>
uding namespace std;
が必要なようです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

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

#3

投稿記事 by みけCAT » 8年前

STR さんが書きました:この行列を計算するためのC言語(C++)プログラムが必要なのですが、探してみましたが、アルゴリズムはあってもプログラムは落ちていません。
アルゴリズムからプログラムに落とす高等技術を持っていないためプログラム作成ができません。
高等技術じゃなくて普通の技術なら持っているのですか?
まず見つけたもの(アルゴリズムが載っているサイト?)を提示して、
「どこまで出来て、どこがわからないか」を具体的に質問していただけると答えやすいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

STR

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

#4

投稿記事 by STR » 8年前

http://ums.futene.net/wiki/LinSol/qr/

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

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

STR

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

#5

投稿記事 by STR » 8年前

補足なのですが、

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

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

閉鎖

“C言語何でも質問掲示板” へ戻る