人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

数値計算(例えば, 線形計画法に対するシンプレックス法や, ニュートン法, また, 常微分方程式に対するルンゲクッタ法やオイラー法など, また, 線形方程式に対する直接法や, LU分解)のアルゴリズムをプログラムしようと思っています.

できるだけ高速かつ精度の良い結果を返すようにしたいのですが, どのようなプログラミング言語を利用するとよいでしょうか?

●質問者: Q-tarou
●カテゴリ:科学・統計資料
✍キーワード:アルゴリズム オイラー シンプレックス法 ニュートン法 プログラミング言語
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● Baku7770
●14ポイント

速度面の保証はできませんが、精度面ではやはりFortranでしょう。

連続系の数値計算を離散系のコンピュータ上で行なって行く場合、誤差が累積していきます。その誤差の累積を抑えるためのライブラリやテクニック集が揃っています。

逆に計算手法そのもののであれば、Algol系の言語もどきで記述されている論文が多く、そういった論文から記述していく方法はありますが、そういった論文はプログラムの提供ではなくロジックの説明に終始していますのでデバック作業が大変なことのほうが多いと考えます。

◎質問者からの返答

ありがとうございます. Fortranですか.


2 ● Mook
●14ポイント

計算のプログラミング化は、自分でいろいろ工夫してみるのもよいですが、

先達の足跡をたどるのもまた大きな勉強です。


C言語による最新アルゴリズム事典 (ソフトウェアテクノロジー)

のような本もありますので、一度目を通してみてはどうでしょうか。


今回質問に挙げられた内容は、掲載されていたように思います。

◎質問者からの返答

ありがとうございます. 質問が不正確でしたが, 上げた例をくみあわせ, さらに別のアルゴリズムを追加するつもりです.


3 ● ita
●14ポイント

諸々のことを考えると Numerical Recipieを使うのが一番

安心で簡単だと思いますが

http://www.nr.com/

昔はFortranだったようですが第二版ではFortranとC,

第三版ではC++になったようです。したがってNRを使うなら

C++ということになりそうですね。

これは過去のソフトウェア資産という観点での回答ですが、

言語自体の数値計算の性能はどれも基本的に同じだと思います。

とはいえ実際の現場で使われているのはFortran,C,C++に限られると

思います。

◎質問者からの返答

ありがとうございます. いろいろ調べてみると, ruby, perlや, pythonなどもあるのですが, これらはどうなのでしょうか. やはりC++が良いのでしょうか?


4 ● pahoo
●26ポイント

アルゴリズムそのものを学びたいのでしょうか? それとも、知られているアルゴリズムを使い、高速・正確に結果を得る方法を学びたいのでしょうか?

前者であれば、私も#2の書籍をお勧めします。C言語で書かれていますが、手続き型言語であれば移植は簡単です。

後者であれば、市販製品ならMathmaticaを、フリーソフトならMaximaをお勧めします。高級言語より専用言語を用いた方が、演算誤差をコントロールしやすいです。

◎質問者からの返答

ありがとうございます. 質問が不正確でしたが, 目的は後者です.


5 ● murakami_tak
●26ポイント

よく知られた言語なら基本的にはどれを使っても学習できます。Ruby,Perl,Pythonでも可能は可能ですが,数値計算には速度や情報量の観点から不利です。

今後も数値計算を継続しておこなわれるのであればFortran,C/C++のいずれかが良いと思います。高速・正確の条件も満たしています。また,近くに詳しい人がいる方の言語にした方が習得が早いと思います。アルゴリズムそのものはどの言語で学んでも同じですが,大体はプログラムにする段階で苦労しますので。

1つだけ選べと言われれば,プログラミング環境の構築しやすさ,サンプルプログラムなど情報量の多さ,より高度な処理(並列計算など)への発展性,そして速度・正確性からC言語をオススメします。

◎質問者からの返答

ありがとうございます.


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ