• ベストアンサー

モンテカルロ法について

SPh法を使って、シミュレーションをしようと思ってます。プログラムで粒子を球状に分布させようとしているのですがうまくいきません。どのように書けばいいか教えてください。Fortranを使っています。

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

  • ベストアンサー
  • sen-sen
  • ベストアンサー率31% (66/211)
回答No.2

一様な球である場合には、#1の方法の他には、rejection法を使って、まず、立方体内部で一様サンプリングして決定した点が設定した球の外部にあるときには、サンプリングをやり直して、球内に得られた点について方向余弦を得るのはいかがでしょうか。

zen777
質問者

お礼

 わかりました、やってみます。ありがとうございました。

その他の回答 (1)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

詳しくないですが、ヒントにでもなれば。 天体望遠鏡で星を掴む(!?)ことを考えます。 まず、東西南北360度の回転があります。・・・一様分布 次に、傾度(仰角)360度の変化があります。・・・一様分布 あとは星までの距離の決定です。 角度2つが決まると、中心からの距離はある確率密度関数になります。 もし、一様な密度の球とすると、点の確率密度は半径の2乗に比例するはずです。

zen777
質問者

お礼

ありがとうございます。参考にしてやってみます。

関連するQ&A

  • モンテカルロシミュレーションについて

    シミュレーション初心者なのですが,モンテカルロシミュレーションを用いて希薄気体中の粒子の放出分布の時間変化を見たいと考えています. direct simulation monte carloに関する本を見てるのですが,どうも時間要素が含まれていないようなのですが,時間変化を考慮したモデルとするにはどうすればよいのでしょうか? よろしくお願いします.

  • モンテカルロ法

    固体中の電子の軌道をモンテカルロ法によってシミュレーション計算するということについて知っていることがあれば教えてください。

  • モンテカルロ法

    モンテカルロ法を使って計算を行う際に、 ある方法を用いて乱数列を発生させ、それを用いて行いました。 この乱数列は50の区分に分けた後、 カイ2乗分布による危険率1%の頻度検定 に合格したものを用いたのですが、 これではモンテカルロ法による計算を行うには 正しいとはいえないとのことでした。 これはなぜなのでしょうか。 確かに、50区分の頻度検定だけでは、 極端な話、周期50の数列がちょうど50区分に分かれて発生していて 結果として一様乱数となっているような場合も考えられます。 それでは、周期が計算に必要な乱数の数に対して十分に大きいとき、 モンテカルロ法として正しいと言えるようになるのでしょうか? 解説をよろしくお願いします。

  • 個別要素法でのシミュレーションにおける粒子の大きさについて

    個別要素法でシミュレーションを行なう際に、粒子の大きさが実際の土粒子よりも大きくしてシミュレーションを行っていますが、それは何故なんでしょうか?実際の土粒子の大きさに設定してシミュレーションを行なってはいけないのでしょうか? もし理由があってそうしているのであれば、教えていただきたいです。よろしくお願い致します。

  • SPH法の発達

     SPH法を、「パソコンによるシミュレーション物理」という本で勉強しているのですが、1992年が初版なのですがそれから10年経っていますがどのような進歩がいままであったか教えてください。

  • モンテカルロシミュレーションのプログラムについて

    モンテカルロシミュレーションを用いたタンパク質と低分子の結合実験を行えるプログラム(使用言語:FORTRAN77)を作ろうと考えています。 結合実験の目的はタンパク質上で低分子が結合しやすい部分をさがすことです。 タンパク質上のそれぞれの部分に乱数を振り分けて確率的な試行(低分子をタンパク質に結合させる操作)を何回も繰り返すことで結合しやすい部分を見つけ出そうと考えています。 しかしプログラミングを本格的に始めてまもないということもあり、プログラムを作るための糸口がいま一つ見つかりません。 (例えばタンパク質上の各部分での乱数のふりかた、パソコンによる操作でタンパク質と低分子を結合できるようなプログラムの書き方など) プログラム完成にいたるまでの手順、方法等についてのアドバイスを頂けませんか?

  • モンテカルロ法

    モンテカルロ法で円(半径y=1、x=2の楕円)の面積を求める計算なのですが、 http://www.geocities.co.jp/SiliconValley-SanJose/8366/kihonC.html このURLのプログラムについて、 ソースプログラムの15行目をxの半径が2なので、”2*”となっているのは分かるのですが、 ・17行目でx*xを4で割ることの意味 (2x*2xとなるから4で割ってるのかなとか漠然とは思うのですが、理解をつめたいです。。) ・20行目でinを2倍している意味 を教えていただきたいです。 よろしくお願いいたします。

  • モンテカルロ法

    モンテカルロ法で円周率の推定値を計算することを最近習ったのですが、定積分でもそれが可能なのを知り、どうやってプログラムを組めばいいのか分からず、困っています。 例えば、定積分∫[0→1]x^2dx=1/3~0.333([0→1]というのは、積分範囲です。)をモンテカルロ法で計算すると、どういうプログラムを組めばいいのでしょうか? わかる範囲で書いてみたのですが…積分の範囲をどうやってプログラミングすればいいのか、いまいち分かりませんでした。 教えていただけると、助かります。よろしくお願いします。 RANDOMIZE INPUT n SET WINDOW -0.1, 1.1, -0.1,1.1 DRAW grid SET POINT STYLE 1 LET sumin=0 FOR i=0 TO n LET x=RND LET r=x*x SET POINT COLOR 2 ! PRINT USING "(%.####, %.####)": x,y; PLOT POINTS: x,y; NEXT i PRINT sumin;n PRINT sumin/n END

  • BASICでモンテカルロ法

    モンテカルロ法で円周率の推定値を計算することを最近習ったのですが、定積分でもそれが可能なのを知り、どうやってプログラムを組めばいいのか分からず、困っています。 例えば、定積分∫[0→1]x^2dx=1/3~0.333([0→1]というのは、積分範囲です。)をモンテカルロ法で計算すると、どういうプログラムを組めばいいのでしょうか? わかる範囲で書いてみたのですが…積分の範囲をどうやってプログラミングすればいいのか、いまいち分かりませんでした。 教えていただけると、助かります。よろしくお願いします。 RANDOMIZE INPUT n SET WINDOW -0.1,1.1, -0.1,1.1 DRAW GRID SET POINT STYLE 1 LET sumin=0 FOR i=0 TO n LET x=RND LET y=RND SET POINT STYLE 2 IF y<x*x THEN SET POINT COLOR 4 LET sumin=sumin+1 END IF ! PRINT USING "(%.####, %.####)": x,y PLOT POINTS: x,y NEXT i PRINT 1*1*sumin/n END

  • ガウス分布に従う速度の決定(Fortran)

    Fortranを用い、ガウス分布に従うように各粒子の速度の初期値を決定したいのですが、どうすればいいのでしょうか? 速度分散はすでに決定してあります。 確率密度関数も出せます。 それらから、具体的にどう速度を決定させればいいのでしょうか? 具体的なプログラム文、もしくはそれが載っているサイト等を教えてくれるとかなり嬉しいです。 そうじゃなくても、ある程度の助言があればお聞きしたいです。 よろしくおねがいします。