ブラウン運動シミュレーター 戻る
統計物理・拡散現象

ブラウン運動・ランダムウォークシミュレーター

粒子数・ステップ幅・軌跡表示を自由に変えて拡散をリアルタイム観察。アインシュタインのMSD=2dDt公式を実際に検証し、拡散係数Dを推定しよう。

パラメータ設定
粒子数
ステップ幅 σ
フレームあたりステップ数
表示設定
軌跡の長さ
カラーモード
境界条件
プリセット
計算結果
0
MSD (px²)
0
D推定値
0
経過ステップ
粒子の軌跡

シミュレーションは自動開始。プリセットや各パラメータを変えて観察しよう。

理論・主要公式
$$\langle r^2 \rangle = 2dDt$$

d=次元(2D)、D=拡散係数、t=経過ステップ

Einstein-Stokes式:

$$D = \frac{k_B T}{6\pi\eta r}$$

ブラウン運動・ランダムウォークとは

🙋
ブラウン運動って、画面の中で粒子がフラフラ動いてるだけに見えますけど、何がすごいんですか?
🎓
大まかに言うと、この「フラフラ」が分子の実在を証明したんだ。1905年、アインシュタインはこの動きを数学的に説明して、目に見えない水分子が花粉を蹴っているからだ、と証明したんだよ。このシミュレーターで「粒子数」を増やして、たくさんの粒子の動きの平均を見てみると、規則性が見えてくるよ。
🙋
規則性? ランダムな動きなのに? 画面の右側のグラフが「MSD」って書いてありますけど、これですか?
🎓
その通り! MSD(平均二乗変位)は、粒子が初期位置からどれだけ離れたかの2乗の平均値だ。ランダムに見えても、この値は時間に比例してきれいに増えていくんだ。シミュレーターの「ステップ幅 σ」のスライダーを大きくすると、一回の蹴りが強くなるから、グラフの傾き(拡散係数D)が大きくなるのがわかるよ。
🙋
へー! でも、この「拡散係数D」って、実世界ではどうやって決まるんですか? シミュレーターで推定できるDと関係あるんですか?
🎓
良い質問だ! 実世界では、アインシュタイン-ストークスの式で決まる。例えば、小さな薬の粒子が血液中をどう拡散するか、を考える時だ。シミュレーターで「境界条件」を「反射」に変えてみよう。容器の中に閉じ込められた粒子の動きを再現できる。実務では、細胞内の分子移動や、半導体の不純物拡散の予測に、この考え方が基礎として使われているんだ。

よくある質問

MSDは平均二乗変位(Mean Squared Displacement)の略で、粒子が初期位置からどれだけ広がったかを示す指標です。アインシュタインの関係式⟨r²⟩=2dDtに従い、時間経過とともに直線的に増加します。グラフの傾きから拡散係数Dを推定できます。
粒子数を増やすと統計精度が向上し、MSDのばらつきが減ります。ステップ幅を大きくすると1ステップあたりの移動距離が増え、拡散が速くなります。ただし、ステップ幅が大きすぎるとランダムウォークの前提が崩れるため、適切な範囲で調整してください。
シミュレーション中のMSDグラフの直線部分の傾きを確認します。2次元(d=2)の場合、傾きは4Dに相当するため、傾きを4で割ることでDが求まります。例えば傾きが0.8ならD=0.2です。粒子数が多いほど推定精度が高まります。
理想的なランダムウォークモデルに基づいており、アインシュタインの関係式を定性的に再現します。ただし、実世界では粒子サイズや流体の粘性、温度などの影響を受けるため、定量的な一致にはアインシュタイン-ストークスの式を用いたパラメータ調整が必要です。

実世界での応用

創薬・ドラッグデリバリー:ナノサイズの薬剤粒子が血液中をどのように拡散し、患部に到達するかを予測する基礎モデルとして利用されます。粒子サイズと拡散速度の関係は、薬の設計に直結します。

半導体プロセス:シリコンウェハー中に不純物(ドーパント)を熱拡散させてトランジスタを作る工程で、不純物の広がり方を予測するために拡散方程式が用いられ、その基礎にブラウン運動の理論があります。

環境科学:大気中の微粒子(PM2.5)や水域の汚染物質がどのように広がるかをモデル化する際の基礎過程です。乱流の影響を加味したより複雑なモデルの出発点となります。

金融工学:株価の変動を幾何ブラウン運動としてモデル化し、オプション価格の評価(ブラック-ショールズモデル)などに応用されています。ここでの「ランダムウォーク」は価格の不確実性を表します。

よくある誤解と注意点

このシミュレーターを使い始めるときに、特にCAE初心者が陥りがちなポイントがいくつかあるよ。まず一つ目は、「粒子数が多ければ多いほど正確」と思いがちなこと。確かに統計的なばらつきは減るけど、計算負荷は爆発的に増える。実務では、必要な精度と計算コストのトレードオフを常に考えるんだ。例えば、拡散係数Dを大まかに把握したいだけなら100粒子でも十分だけど、厳密な分布形状を知りたいなら1000粒子以上は必要かもしれない。その判断ができるのがプロの勘所だね。

二つ目は、「ステップ幅σ」と「拡散係数D」の関係を混同しやすい点。シミュレーター上ではσを大きくするとDも大きくなるけど、実世界ではDは物質の性質(温度、粘性、粒子サイズ)で決まる「結果」だ。シミュレーションはそのDを再現するために、適切なσや時間ステップΔtを逆算して設定する必要がある。例えば、水の中のたんぱく質のDが分かっている場合、シミュレーションで同じDを出すためのσは、$$D = \frac{\sigma^2}{2 \Delta t}$$の関係から決めるんだ。この「モデル化」のプロセスを理解しておかないと、ただのゲームで終わってしまうよ。

最後に、「反射」境界条件の落とし穴。容器を再現できる便利な機能だけど、現実の分子は完全に弾性反射するわけじゃない。壁に近づくと摩擦や化学的な相互作用が起こることもある。シミュレーションで反射条件を使うのは「第一近似」に過ぎないことを頭に入れておこう。細胞内のように複雑な環境を模倣するには、境界に特別なルール(例えば、ある確率で吸着するなど)を追加する必要が出てくるんだ。

使い方ガイド

  1. 粒子数(nVal)を1~100範囲で設定。初期値10個から開始する場合が多い
  2. ステップサイズ(sigmaVal)をピクセル単位で0.5~5.0範囲に調整。分子運動シミュレーションでは1.0~2.0推奨
  3. サンプリング頻度(spfVal)を設定し、MSD計算の時間解像度を決定。1ステップごと観察が標準
  4. 軌跡表示期間(trailVal)で過去n步の軌跡を描画。メモリ効率のため50~200推奨
  5. シミュレーション開始後、リアルタイムMSD値と拡散係数D推定値を監視

具体的な計算例

粒子数n=20、ステップサイズσ=1.5px、総ステップ数1000の場合:初期段階(ステップ0~100)ではMSD≈150px²、中期(ステップ200~500)でMSD≈850px²と増加。MSD=4Dtの公式から、t=500ステップ時にMSD値850より逆算するとD推定値≈0.425px²/step。実際の物理系では、水中の赤血球(直径7μm)でD≈100μm²/sが標準値。シミュレーション時間スケール0.1msec/stepと設定すれば、物理値への変換可能

実務での注意点

  1. MSD曲線が直線性を示さない初期段階(0~50ステップ)は拡散係数推定に除外。十分な統計データ蓄積まで待機が必須
  2. 粒子数が少ない(n<5)場合、個別軌跡のゆらぎが大きく統計誤差増大。n≥15推奨で信頼性向上
  3. ステップサイズとサンプリング頻度の組み合わせで見かけのD値変動。物理系と対応させる際は次元解析で正規化必須
  4. 壁面反射やドリフト力が無いため、純ランダムウォークのみ。実験系との比較では外部場の影響を別途評価