こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

数値計算ができるようになりたいのですが…

現在、大学院修士課程1年です。
将来はアカデミックな研究者を目指しています。

今行っている研究で、非線形方程式(多変数)の解を数値計算を用いて得たいと考えています。
今まで数値計算はやったことがないのでこれから勉強をはじめるところなのですが、少し悩んでいます。

今は数値計算に便利なMATLABのような市販ソフトがあることが分かっており、勉強すれば短時間で実際に研究につかうことができそうです。
しかし、やはり研究者を目指すなら、そのようなソフトに頼らず、しっかりと数値計算の理論を理解したうえで、FORTRANなどで自らプログラムを書くべきなのでしょうか。

良いアドバイスがありましたらよろしくお願いします。

投稿日時 - 2008-09-01 16:37:23

QNo.4295559

すぐに回答ほしいです

質問者が選んだベストアンサー

プログラム言語なんて、一つマスターすれば何でも一緒ですよ。
英語や中国語をマスターするより、全然易しい。

フリーソフトでFortrunコンパイラが入手できる時代ですので、
Fortrunに興味ありそうなのだから、書いてみれば良い。

あなたの場合、まさしく遅功より拙速です。悩むよりやってみることです。1日あればFortrunって何って判ると思いますよ。Matlabだって同じこと。

目的や環境で選んだ方が良いです。

僕は、自分の狙いの特性のアンテナが欲しかったので、理論式から解いて楕円関数が入ったからMathematicaで理論解を求め、CでFDTD法の伝搬解析プログラムを書いたことありますが、Cで書いたのは一番慣れているからで、「科学技術計算ライブラリ」の本を買ってきて複素数の取り扱いを参考にしてかいた。同じような内容がネットでもあったのでご参考。
http://www5.airnet.ne.jp/tomy/cpro/science.htm

Fortrunの資産があればFortrunでも良いのでは。FortrunよりCが良いのは型の宣言が自由度あり変換も簡単だし、ポインタが使えるところかな。僕にとってはかゆところに手が届くのがCの方です。

まだ若そうな研究者のようなので、いろいろ経験してみることです。

投稿日時 - 2008-09-06 16:38:50

お礼

お礼が遅くなってすみません。
そうですねいろいろやってみようかと思います。
ありがとうございました。

投稿日時 - 2008-10-08 19:14:06

このQ&Aは役に立ちましたか?

14人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

私が使ったFortranの"文法の"参考書です。

入門Fortran90
Larry Nyhoff,Sanfort Leestma

プログラミングの手順や注意点が書いてあり参考になりました。
電気回路の電流値や仕事量の計算等の例題があります。
"数値計算法"の参考書ではありません。

web上では、京大の富田博之先生のHPが参考になります。

他の方も言われているように、簡単な言語なので
webの情報を参考に一度プログラムを作ってみると良いと思います。
フリーで手に入るコンパイラには、GNUやIntelの評価版などがあります。
ちなみに、Fortranは現在Fortra2003まで策定されており、古い言語ではありません。

ただ、個人的には研究者は市販ソフトに頼るべきだと思います。
数値計算の理論を理解した上で、便利ツールを活用したほうが研究がはかどります。
矛盾したように聞こえるかもしれませんが、
プログラミングの技術を身につけた後、市販ソフトを使うのをおすすめします。

投稿日時 - 2008-09-17 00:54:07

お礼

お礼が遅くなってすみません。
理論をしっかりと把握した上で市販ソフトを使ってみようとおもいます。ありがとうございました。

投稿日時 - 2008-10-08 19:15:48

ANo.3

自分で解いた微分方程式や解析式を計算したいんですよね?
MATLABやMathematicaで計算できることなら自分でコーディングするのは不要でしょう。
金の問題なら、フリーソフトのScilabとかもあります。

それらでは計算できないから、研究者だから市販のコードがないので自分でコーディングするのは分かります。その際は、Fortrunより、CとかC++の方が良いと思いますよ。趣味の問題ですが。
複素数の取り扱いも簡単にできるし。

SnやCnでもMathematicaで計算できるので、先ずが市販ソフトを使ってみるべきです。

投稿日時 - 2008-09-03 22:12:18

補足

自分の研究でモデルを構築しており、実際のデータを用いてモデルのパラメータを推計するために、非線形最適化問題を解きたいのです。

市販ソフトでできないからというよりは、自分でプログラムを組んだほうが今後研究を発展させる上でも役立つのではないかと考えています。

科学計算にはFORTRANがいいと聞いた事があるのですが、C++の方が良いという点が具体的にありましたら教えていただけないでしょうか?

また、非線形最適化の本などは読んでるのですが、そこには実際にどうプログラムするのかについてはあまり書いてなく、自分の中でなかなかプログラムと結びつきません。もし良い本がありましたら教えてください。C++でもFORTRANでも結構です。

よろしくお願いします。

投稿日時 - 2008-09-03 23:21:13

ANo.2

今でも数値計算・科学技術分野ではフォートランは現役です。
特に並列処理プログラミングでフォートランの右に出る言語は無いでしょう。
今後パソコンでもマルチコア化が進めばさらに有用になると私は考えてます。

修士課程は研究は新規性が問われますからMATLABなどの先人の業績に上にフォートランであなたの実績を積み上げてください。

参考URL:http://suchix.kek.jp/~matufuru/Note/CN/Prog/MPI/mpi_tutorial.html

投稿日時 - 2008-09-01 17:17:32

補足

ありがとうございます。

科学計算にはFORTRANがいいと聞いた事があるのですが、もう古い言語というも聞きます。
もしこれから数値計算を学ぶならfortranとC++ではどっちが良いのでしょうか(参考書の量や質も含めて)。また、それ以外でいい言語などがありましたら教えていただけるとありがたいです。

投稿日時 - 2008-09-03 23:19:30

ANo.1

今時フォートランという選択肢はありえないです。
まずはエクセル等で計算してみてはどうでしょうか。

投稿日時 - 2008-09-01 16:42:22

お礼

ありがとうございます。

研究室でメインにつかっているものがFORTRANだったり、
数値計算にはFORTRANがいいというのを聞いたことがあったので…。

そうですね、他の言語、C++なども考えてみようと思います。

投稿日時 - 2008-09-03 23:17:00