• ベストアンサー

物理シミュレーションをする時、どのくらいプログラミングの知識があればいいのか?

物理学で自然現象をパソコンでシミュレーションするとき、プログラム言語はどのようなものを使うのでしょうか?よく知られたC言語やJava等は使わないのでしょうか?専門的なプログラム言語がいろいろあるのでしょうか? 今後パソコンで物理シミュレーションを行うことになったとき、プログラムに関してはどのくらいの知識があればいいのでしょうか? 基本的な本を見るとBasicやFortranを使ってシミュレーションの説明をしているものがありますが、このような基本的な言語も使えるようになったほうがよいのでしょうか? C言語やJava、VBなど一般的によく知られたプログラミング言語も覚えたほうがよいのでしょうか?

noname#84374
noname#84374

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

  • ベストアンサー
  • FM-8
  • ベストアンサー率39% (65/164)
回答No.8

いくつかのケースがあります. どなたかもすでにご回答のとおり, 「シミュレーション記述言語」というようなものが いくつかありまして, mathematica freefem その他,有料のfemソフトとか 流体解析ソフト に入力するデータを作って入れる ということになります. それを一種の言語を用いたプログラミングだといえばそうでしょう. 別のケースとして,Cなどのプログラム言語で, femソフトを作る場合もあります. そのときに,どういう手順をたどるかというと, 物理現象を,マトリックス形式にする式展開の載っている本を購入します. その本は,ハンドブックだったりしますが, そこに載っているマトリックス形式の式を プログラムします. そのときには,プログラム言語は何でもいいと思います. 一部で,Fortranや,BASICというのがありますが, これらは,Fortranについて言えば,昔ながらのものであり,これを用いたプログラムがたくさんあるという理由です.BASICも同様です. もしも新たに,プログラムについて覚えるのならば, CかC++でしょうね. これからは,プログラマーは,適当に書いて, 最適化コンパイラが汗をしぼって「高速で効率的な実行形式を生成する」時代です. 私も,言語はBASICから入り,大学時代はFortran を主に使ってました.シミュレーションをプログラムするレベルなら,どれも大差ありません. Cが一番小回りが利いていいと思いますね.

noname#84374
質問者

お礼

アドバイスありがとうございます。 大変参考になりました。 これからは、自分がどういう研究をするのか明確にして、しっかり勉強していきたいと思います。 ありがとうございました。

その他の回答 (7)

回答No.7

他のかたとは違う答えになりますが。 まずは、自然現象をシミュレーションと言ってもいろいろですから、答えもいろいろになります。あと、radioswimmerさんがどのような環境にいるのかでも変わります。 私の場合を申します。殆どのシミュレーションは、mathematicaという数式処理ソフトを使って行っています。これはグラフィクス出力もできます。FortranやCなら何日も要するプログラミングもこれなら数時間とか数10分でできます。自分で買うには高いのがつらいですが、大学等であれば使える環境ではないでしょうか。他にも数式処理ソフトは例えばMATLABとかいくつかあります。詳しい先達が居るか居ないかとかで選べば良いと思います。 mathematicaでは間に合わない巨大な数値計算を要するシミュレーションの場合は、やむなくC言語でプログラミングしています。でも苦痛です。特に結果をグラフィクス等でビジュアルに出す場合はつらいですので、これまたしょうがないから、Cプログラムで処理して得た結果の数値ファイルをmathematicaにimportしてグラフィクスにしています。 目的によっては専用のシミュレータが既に用意されています。例えば電子回路ならSPICEがあります。パソコン用のpSPICEは無償のものもあります。私はそれを使っています。数式とかプログラムとか全く要りません。 電子回路ではなくても、自然現象の微分方程式表現は電気回路と同じ微分方程式になるということで、自然現象を電気現象に置き換えてSPICEでシミュレーションしている人もいると聞いています。 私はFortranは使いません。プログラミングとしてはCで間に合うと思っています。Fortranも使えた方が良いに決まっていますが、道具をいろいろ学習する時間が惜しいのです。 ただし、特定用途に開発されたシミュレータにはFortranの知識を要するものもあります。その種のシミュレータが存在する分野のシミュレーションを行うなら、そして自分で一からシミュレータを開発するのでないのなら、Fortranは必須となるわけです。

noname#84374
質問者

お礼

さまざまなアドバイスありがとうございます。 非常に参考になりました。 今後、どのようなシミュレーションを行うか、自分なりに明確にして、勉強していきたいと思っています。 ありがとうございました。

noname#11476
noname#11476
回答No.6

>Linuxは、使えるようになるとどんなメリットがあるのでしょうか? グリッドコンピューティングなどをするときには使うことがあるし、何よりOSが軽く、安定していて、FortranもC/C++等の言語も簡単に手に入るため、安価(というよりほとんどフリー)に環境を整えられます。 更に言うとLinux上で開発されたさまざまなツールが手に入るので、自分で一から開発しなくてもよく効率がよいです。 >ひととおり使えるようになるには時間がかかるでしょうか?1年くらいかかるのでしょうか? 基本を覚えるのはそんなに難しくありません。どちらかというと数値演算に必要な数学を覚える/理解する方が大変です。より早く計算するために数学の知恵を沢山盛り込んでいるのが数値演算ですから。 なので、言語は必要に応じて覚えればよい程度です。 それ以上に数学ですね。 一度 Numerical Recipes In C という本を読んでみて下さい。数値演算の基礎が詰まった本です。

noname#84374
質問者

お礼

丁寧な回答ありがとうございます。 Linuxは使えるようになるには大変そうですが、是非とも覚えたいものです。 数値演算の知識を覚えるのが大切ということが良く分かりました。文献も紹介してくださってありがとうございました。さっそく勉強してみます。

noname#11476
noname#11476
回答No.5

覚えて損はない言語はFortranとC/C++)です。 最近ではC/C++の演算ライブラリも充実してきているので、これで書くとWindowsのグラフィカルも利用しやすいです。C++であれば複素数演算なども行えますから。 ただ膨大な計算を行おうとするとFortranを使いたくなります。特に処理量が多いことが予想されて、パソコンでは手に余る計算になりそうな場合ははじめからFortranで記述して、高速なコンピュータ(スパコンとか大型計算機)で計算させるようなこともしたりします。 ただ最近はグリッドコンピューティングとか出てきているので、これ以外にもPerl, JAVA などは覚えた方がよいかもしれません。OSはWindowsだげてなくLinuxも忘れずに。

noname#84374
質問者

補足

回答ありがとうございます。 Fortranは古い言語というイメージがありますが、いまだに現役なんですね。 みなさんのコメントを総合しますと、Fortran、C、Javaをまず覚えたほうがいいようですね。 Linuxは、使えるようになるとどんなメリットがあるのでしょうか? いずれにしても、覚える言語はかなりありますね。 かなり気合を入れて勉強するとして、ひととおり使えるようになるには時間がかかるでしょうか?1年くらいかかるのでしょうか?

  • heinell
  • ベストアンサー率35% (420/1172)
回答No.4

その出力結果も考慮するといいかもしれません。 出力結果が数値の表であったり、単純なグラフでいいならあまり言語は問わないと思います。 (問題となるのは数値精度でしょうか。小数点を含む最大桁数をチェックしてください) しかし、その出力をアニメーションやCGで出力したいとなると、そちらの知識が必要になるかもしれません。 Fortranはグラフィカルな表現には弱いので、それだけで全てを行おうとすると不利です。 手法としては ・Fortranなどで出力データ(数値のみ)を作成し、グラフィック出力を別言語やツールで行う ・最初からグラフィック出力も出来る言語で行う (ただ、シミュレーション計算と画像処理で倍の勉強必要な事は変わらない) こんな感じになると思います。 あとはサンプルとなる資料にも左右されます。 物理シミュレーションと言っても、全ての計算を自分で考えるんではなく、部分的に他の専門書のプログラムを借りる事も多いと思います。 そういう資料が多い言語を選ぶと言うのも手です。 実際はその研究室等にある機材で何の言語を使っているか?という方が重要だったりしますが^^

noname#84374
質問者

お礼

回答ありがとうございます。 僕が興味があるのは、アニメーションやCGというより技術計算のほうなので、Fortanあたりを覚えるのがよさそうですね。 ありがとうございました。

回答No.3

自然現象のシミュレーションはいわゆる技術計算と可視化の2つの組み合わせで構成されていると考えていいと思います。前者には、数値計算と数値解析の基本的知識が必要となります。具体的には、No.2の方が最初に書かれている事柄です。常微分方程式だけでなく、積分や変微分も扱う可能性がありますから、その場合は、それらに対応する計算法も必要です。他には乱数に関する知識が要求される可能性が大きいです。 言語は何でもいいのですが、やはりFORTRANが最適です。ただし、もし演算速度をあまり問わない程度の規模の問題で、普通のパソコンレベルで処理するのであれば、CかC++かJavaで書けばいいでしょう。可視化の部分は、おそらくJavaを使うのが楽です。 もし、質問者さんがプログラミングの初学者で、手始めに何かひとつ言語を選んで、物理シミュレーションを学ぶのであれば、個人的にはJavaで取り掛かることをお勧めします。

noname#84374
質問者

お礼

回答ありがとうございます。 私は技術計算のほうに興味があるので、数学の知識がまず必要なんですね。 勉強します。ありがとうございました。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

・数値の表現形式や桁落ちとか丸め誤差 ・Newton法やRunge-Kutta法など、効率的な計算法 ――といった数値計算の基礎が、まず必要だと思います。 上記が既に習得済みだとした上で、プログラミング言語について言えば、加減乗除の計算と基本的な入出力ができれば、何でも良いです。結果を可視化(visualize)したり、グリッドで並列計算させたいと言った場合は、別種のプログラミング知識が必要となりますが。

noname#84374
質問者

お礼

回答ありがとうございました。 数値計算の基礎がまず必要なんですね。 本を買ったり、図書館に行ったりして勉強します! ありがとうございました。

  • yosi_yosi
  • ベストアンサー率35% (165/468)
回答No.1

大学の卒業研究で物理シミュレーションを行っていました。 物理シミュレーションには大量の数値演算を行う必要があります。これを高速にかつ簡単に行うのにはやはりFORTRANが最適です。Basicや(特にインタプリタ)Javaなどでは膨大な演算処理をするのには遅すぎますし、Cでは複雑な演算処理を行うのは難しいです。 ちなみにプログラミングの能力はそれほど問われないはずです。それよりも数学や物理学に対する知識が必要でしょう。

noname#84374
質問者

補足

回答ありがとうございます。 数学や物理に関する知識のほうが大事なのですね。 勉強します。 C言語とFortran、両方覚えることに越したことはないと思うのですが、やはりFortranを優先的に覚えたほうが良いでしょうか?

関連するQ&A

  • プログラミングをするならどの言語

    こんにちは宜しくお願いします。 40歳近い私は、BASIC等でプログラムを組んだ世代ですが 最近新しいプログラミング言語を覚えようと思っております。 用途にもよると思いますが、お勧めのプログラミング言語が ありましたら、教えてください。 自分では、JAVAとかC++とかなのかなと思っています よろしくお願いします

  • シミュレーションをプログラミングにより行う場合、何から勉強すべきでしょうか

    土壌物理学を専攻している者です。現在、土壌中での物質移動のシミュレーションを何らかのプログラミング言語を用いて行いたいと考えております。ただし、プログラミングの初学者のため、何から勉強して良いか分かりません。お勧めの教科書などあれば教えてください。

  • プログラミング言語がたくさんある理由

    数学関係学科の大学生3年生女子です。 数学では論文の作成にTeXを使うので、学校で少しやっています。 そのほか少し興味があり独自にpythonの勉強をしています(さわりだけですが 笑) プログラミング言語では、そのほかにBASICやCとか耳にします。 R,というのもプログラミング言語なのかもしれませんが、少し調べると、COBOLとかFORTRANなんて言語もあるそうで、そもそもなんでこんなにプログラミング言語があるんでしょうか?

  • 以下の言語の初心者用のページとかありませんか?

    現在以下の言語で共通プログラムを作成中です BASIC VisualBASIC C Pascal Fortran Java Perl で価格,預り金を入力するとそのおつりと紙幣・硬貨の各枚数を表示するプログラムを作成中です。 BASICは簡単だしVB,Cは多少やっていたのでわかるんですが、他の言語がさっぱりです・・・ 参考になるページがありましたら教えてください。 また上のプログラムのサンプルなどがありましたらかなりうれしいです・・・ ちなみに配列・SelectCaseを使って作成しています。

  • プログラミングをしてみたい。

    以前から、パソコンを使うことが好きで、最近プログラミングをしてみたいと感じるようになりました。 少し調べたところ、Basicがプログラミング入門者にはおすすめと聞いたので、ぜひやってみたいと思います。 さて、実際にはどのような物が必要なのでしょうか? おそらく、プログラミングをするためのソフトウェアが必要なのだろうと思うのですが、こういったことが出来るソフトはフリーウェアでは無いのでしょうか? 私自身、学生であまりお金が無く、今後授業でプログラミング(BasicやC言語)をやるようなので、予習をしておきたいのです。 ご存知の方、お教え頂ければ幸いです。

  • プログラミング言語

    物理の実験系で必要なプログラミング言語には主にどのようなものがあるのでしょうか。Fortranなどは実際使われているのでしょうか。

  • 避難シミュレーションプログラミング(Fortranにて)

    大学の研究で、災害時の避難シミュレーションのプログラミングをVisual Fortranで行っています。 人が一本道を歩いていて、十字路の交差点にさしかかった時に、 交差点を判断して、とりあえず右に曲がるという プログラムを組みたいと考えております。 わかりずらくてすいません、 マニアックな質問かと思いますが、 考え方として良いアイデアがありましたら教えてください。

  • プログラミングを始めようと思います。どの言語からやればいいでしょうか?

    プログラミングを始めようと思います。どの言語からやればいいでしょうか? プログラミングを始めようと思っています。 でもどの言語から始めればいいのか、基礎知識は何が必要か、 どこから手をつければいいのか分からなくて・・・ いろんな質問やサイトを調べたら javaかCかVB のどれかからやった方がいいと あったのですが、 超初心者はどれから始めたほうがいいんでしょうか? あと、プログラミングを始めるのにあたって 必要な基礎知識は何でしょうか? これは調べた質問・サイト全て 言っていることが違うので・・・ いろんな人の回答がほしいです。 宜しくお願いします。

  • 子供がプログラミング始めるにはやっぱりBASICから?

    パソコン教室でパソコンを教えているのですが、ある程度基本操作が出来るようになった人(特に小中学生)が始めるのに適したプログラミング言語とは何でしょうか? 私たちの世代(20代)では、BASIC→C言語という順にステップアップしていくことが多かったのですが、今でも最初はBASICから始めることが多いのでしょうか? もしそうだとしましたら、WinXP上でBASICを勉強する良い方法を教えてください。 フリーソフトでそのような学習用ソフトでもあればよいのですが・・・。 よろしくお願いします。

  • クオンツに必要なプログラミングの知識はなんですか?

    クオンツかアクチュアリーを目指している中堅私立大学2年生(経済学部)です。金融系の企業の採用情報を見る限り、クオンツにしろアクチュアリーにしろ、 ・英語力 ・プログラミングスキル ・数理的処理能力 の3つが必須条件でしかも学歴フィルターに引っかかるため、プログラミングスキルと数理的処理能力をあとの3年間(大学院に行くため)で極めようと考えています。もちろん英語力もつけますが(笑) 英語と数理ファイナンスは友人や先輩で大学院生がいるため、いろいろ情報を仕入れることができるのですがプログラミングについて全く情報が入ってこない環境です。 最初は王道のC++かJavaに手をつけようと思ったのですが、RubyやPerl,Python,R言語などいろいろあって何から手をつければよいのか分からなくなってしまいました。 でも、とりあえずC++かJavaかのどちらか1つに絞って勉強したいと考えています。 補足で、かつてBasic言語なのですが、Visual BasicとActive Basicをやっていました。いまでもWindowsプリインストールのメモ帳ぐらいなら作れます(RADなしで)。大学の教養にもプログラミングはないので、完全独学になります。 ここで、質問なのですが (1)クオンツに限らずC++とJavaなら、どちらを習得すればよいですか。 (2)おすすめの書籍を教えてください。 (3)C++とJavaに限らずこれは使いこなせたほうがよい開発言語があったら教えてください。 猥雑な文章ですが、回答をお待ちしております