Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

統計力学シミュレーション

Important

この章を読む前に

この章を読むには、以下の章を先に読んでおく必要があります。

統計力学は、原子や分子といったミクロな構成要素の振る舞いから、温度や圧力、磁化といったマクロな性質を導き出す学問です。 しかし、現実的な複雑さを持つ系において、理論的に厳密解が得られるケースは極めて稀です。

そこでコンピュータシミュレーションの出番となります。 特にマルコフ連鎖モンテカルロ法 (MCMC) を用いたスピン系のシミュレーションは、計算物理学の中で最も成功した分野の一つであり、相転移や臨界現象の理解に多大な貢献をしてきました。

本章では、統計力学モデルの代名詞である「イジング模型」を題材に、MCMCを用いたシミュレーション手法とその物理的背景を学びます。

本章の構成

  1. イジング模型の基礎 磁性体の簡易モデルであるイジング模型を定義し、統計力学の基本原理(ボルツマン分布)との関係を確認します。

  2. メトロポリス法 MCMCの代表的なアルゴリズムであるメトロポリス法を用いて、2次元イジング模型をRustで実装します。

  3. 相転移とクリティカル現象 温度変化に伴う磁化の発生(自発的対称性の破れ)や比熱の発散といった、相転移現象をシミュレーションで再現・観測します。

  4. 2D Ising実践演習 2次元イジング模型について、厳密解ノート、PLAN、実装、チェック、有限サイズスケーリングを一つの演習として進めます。

  5. その他の格子模型 イジング模型を拡張したポッツ模型やXY模型など、より多様な物理現象を記述するモデルについて概観します。

作業テーマ

作業ディレクトリは ~/rust-computational-physics-work/ からの相対パスです。 ユニットテストで確認する具体的なケースは、解析解、境界条件、許容誤差の観点からAI coding agentと相談して決めます。

テーマ作業ディレクトリ構造化するコードユニットテスト演習拡張演習
イジング模型の基礎statistical-mechanics/ising-basicsidx, neighbor, energy, magnetization小さい格子でエネルギーと磁化を手計算と比較する周期境界条件を切り替えられる形にする
メトロポリス法statistical-mechanics/metropolisdelta_energy_flip, accept, sweep, measure局所エネルギー差と全エネルギー再計算を比較する熱化と測定間隔をmetadataに保存する
相転移statistical-mechanics/phase-transitiontemperature_scan, susceptibility, specific_heat固定seedで測定量の再現性を確認する温度走査結果をCSVに出力する
2D Ising総合演習statistical-mechanics/ising-exercise格子、更新、測定、保存、有限サイズスケーリングを相談して分ける決定的に確認できる性質と小さい格子の統計チェックをAI coding agentと選ぶBinder parameterの交差から転移点を推定し、厳密解と比較する
その他の格子模型statistical-mechanics/other-modelspotts_energy, xy_energy, local_update小さい格子で相互作用エネルギーを確認するmodel enumで複数模型を切り替える

検証と実装の観点

統計力学シミュレーションでは、乱数、熱化、測定間隔、有限サイズ効果を明示します。 MCMC一般では burn-in という語も使われますが、統計物理の文脈では thermalization(熱化)と呼ぶのが一般的です。 1回のrunだけで結論を出さず、seed、格子サイズ、温度、測定回数を結果と一緒に保存します。

  • 格子、model、更新アルゴリズム、測定、入出力をmoduleで分ける。
  • 小さい格子で局所更新量と全エネルギー再計算を比較する。
  • 熱化、sampling interval、autocorrelation、誤差棒を確認する。
  • agentに実装を任せた場合も、周期境界条件とdelta_energy_flipの符号を重点的に確認する。
  • 2D Isingの総合演習では、note、PLAN、実装、チェックの順に進み、Binder parameterで有限サイズスケーリングを確認する。