- ベストアンサー
モンテカルロシミュレーションについて
シミュレーション初心者なのですが,モンテカルロシミュレーションを用いて希薄気体中の粒子の放出分布の時間変化を見たいと考えています. direct simulation monte carloに関する本を見てるのですが,どうも時間要素が含まれていないようなのですが,時間変化を考慮したモデルとするにはどうすればよいのでしょうか? よろしくお願いします.
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
モンテカルロ法計算について若干の経験のある者です。 ある系についてその何らかの挙動を解析したい場合、その挙動を支配する方程式が簡単に求められるなら方程式を直接解いた方が簡単です。しかし方程式が複雑すぎて手に負えなかったり、そもそも方程式を立てられなかったりする場合はモンテカルロ法の出番です。 モンテカルロ法は一般に、対象とする系のおおまかな性質が分かっているなら、系を支配する方程式が分からなくとも直接的にその挙動を解析できる強力なツールです。 もちろん弱点もないわけではありません。大掴みな性質だけからモデルを立てていますので「モデルは妥当なのか」という指摘が常に付きまといます。また今回のご質問の核心である「実時間との対応はどうなのか」は最大の弱みです。 モンテカルロシミュレーションの有名な例として「ビュフォンの針」の問題を挙げておきます。これは円周率を確率的試行から計算するシミュレーションです。詳細は参考ページ[1,2]などでご覧下さい。このシミュレーションには時間の概念は入ってきません。1回目に針を投げた試行の結果は、2回目の試行に対し何らの影響も与えないからです。 rayleighさんのおっしゃる「direct simulation monte carloの本」で取扱っている問題がその種のものばかりなら、時間的な概念はそもそも登場しないことになります。 一方、モンテカルロシミュレーションに時間(に相当する概念)を取り入れることも可能です。具体的な例を示しながら話を進めたいと思います。 いま下図のような系を考えてみます。基材の表面にA,B2種類の物質が一定の確率で降ってくるとします。表面に到達した物質は一定の確率で、前後左右に動いたり表面から脱離したりするものとします。そしてうまいことAとBが出会うと、そこで反応し基材表面に析出するものとしましょう。 つまり1回の試行では (1a)Aを表面に投下する (1b)Bを表面に投下する か、表面に存在する物質(AかB)を一つ選んで (2a)右に1マス動かす (2b)左に1マス動かす (2c)前方に1マス動かす (2d)後方に1マス動かす (3)表面から脱離させる のいずれかを確率的に行うこととします。(モデルは3次元であり、「前方に1マス」は画面手前方向への移動を意味します) ○A 脱離 ● ↓ ●B ↑ 反応 ● ←○→ ●○ ←●→移動 ━━━━━━━━━━━━━━基材表面 //// 基 //// 材 //// (2a)~(2d)は表面に沿った拡散(表面拡散)に当たる概念ですし、(3)は表面到達-脱離までの平均滞在時間と対応する概念です。それぞれの事象の発生確率を適宜設定した上で、この試行を何回も繰り返すと基材表面にはA+Bの反応生成物がどんどん析出していきます。 このようなシミュレーションなら系の状態が時々刻々変化していく様子を調べられます。モンテカルロシミュレーションで時間的な変化を見るには、系の状態を履歴として記録し、n+1回目の試行にn回目の状態を反映させればよいわけです。 この場合はビュフォンの針の例と違って各回の試行に厳然たる順序関係が存在することになります。時系列でもその順序関係は保たれると推定できます。 ただし細かく申し上げるとこの場合でも問題は残ります。「1回の試行が、実時間のいったい何秒(何分、何時間)に当たるのか」が簡単には分からない点です。これはモンテカルロ法の本質的なアキレス腱でもあります。 モンテカルロ法で時間の概念を取扱う場合、実時間での扱いは諦め代わりに"Monte-Carlo Step (MCS)"がよく使われます。これは試行回数を基準とした時間単位です。参考ページの[3]は焼結シミュレーション、[4]は粒成長シミュレーションの一例です。いずれも時間に代わる概念としてMCSを用いています。 なお1回の試行をそのまま1 MCSとする場合もありますし、ある程度まとまった数(例えば系の全原子数に等しい数)の試行を1 MCSとする場合もありますので、本や論文を読む際にはその著者がMCSをどう定義しているか確認する必要があります。 rayleighさんがどのような現象をシミュレーションしようとしていて、現在どのようなモデルを考えておいでなのか分からないため、具体的な改良モデルはいかんとも回答し難いところです。 まず「時間変化」の本質が何によるのか考えてみてください。粒子の放出に起因するのか、稀薄気体の圧力低下によるのか、あるいは他の要因なのか。 その変化をうまくモデルに取り込み、n+1回目の試行がn回目の試行完了時の系の状態によって影響されるようなシミュレーションを組み立てればよいわけです。上手にモデルを作ることがシミュレーションの本質であり、難しさでも面白さでもあります。 参考ページ [1] http://www.kwansei.ac.jp/hs/z90010/sugakuc/toukei/buffon/buffon.htm [2] http://www.f.waseda.jp/takezawa/math/number/buffon/buffon.htm [3] http://www.staff.ncl.ac.uk/fulian.qiu/sintering1.htm [4] http://www.scielo.br/scielo.php?pid=S1516-14391999000300004&script=sci_arttext&tlng=en
その他の回答 (1)
- elmclose
- ベストアンサー率31% (353/1104)
直接の答えではありませんが、時間要素は、粒子放出分布のモデルの中に入ってくるものであって、モンテカルロ法自体とは独立なような気がしますが。 http://www.amazon.co.jp/exec/obidos/ASIN/4563008788/ http://www.amazon.co.jp/exec/obidos/ASIN/4320071395/
お礼
迅速な回答ありがとうございます. まだまだ,勉強不足のためご紹介していただいた参考書を探して見てみようと思います. ありがとうございました.
お礼
Umadaさま とても丁寧なご回答ありがとうございます.例を挙げて説明していただいてるため非常に分かりやすかったです.モンテカルロシミュレーションにおける時間の概念がどういったものかがわかりました. 僕がシミュレートしたいモデルは,レーザーアブレーションにより基板表面から放出される粒子の空間分布なので,エネルギーを持った粒子がある初速をもって飛散して,拡散する様子を見たいと考えています. 同じようなモデルをモンテカルロ法によりシミュレートしている論文を読んではみたのですが,具体的なプログラミングが分からずに行き詰っていました.その論文では,粒子が拡散していく初期の段階は放出された粒子どうしの衝突も考慮して,ある程度拡散すると粒子どうしの衝突は無視し,雰囲気ガスとの衝突により拡散していくとモデリングしているようです. 今の僕はこのような現状なのですが,なにかご教授いただけると幸いです. 今回のご回答本当にありがとうございました.