2D Ising実践演習
この演習では、2次元正方格子イジング模型を題材にして、理論的に分かっている性質、実装計画、検証を一つの流れとして扱います。 いきなりコードを書かず、第1章の「AI agent を使う標準的な流れ」と同じく、まず note、次に PLAN、最後に実装とチェックへ進みます。
扱う模型は、外部磁場なし ( ) の強磁性イジング模型です。
ここで は最近接ペアに対する和、 は または 、 は強磁性相互作用です。 格子サイズを 、スピン数を 、総磁化を 、単位スピンあたりの磁化を とします。
1. 厳密解ノート
まず、厳密解の導出を追う必要はありません。 実装と検証に必要な性質を、自分の note にまとめます。
外部磁場なしの2次元正方格子イジング模型では、熱力学極限で臨界温度が厳密に分かっています。
したがって、
です。 また、熱力学極限の自発磁化は、 で
となり、 ではゼロです。 これは有限格子の単純な平均磁化そのものではなく、熱力学極限で対称性が破れた相を選んだときの量です。
有限サイズの分配関数は有限個の指数関数の和なので、自由エネルギーは温度の滑らかな関数です。 したがって、厳密な意味での相転移の特異点は の極限で現れます。 有限サイズのシミュレーションでは、磁化の変化や比熱のピークは丸まり、ピーク位置も厳密な からずれます。
2. 対称性と測定量
では、すべてのスピンを反転する変換 に対してハミルトニアンは不変です。 そのため、有限サイズの平衡分布では となり、厳密にサンプリングすれば
です。 一方で、 はゼロではありません。 低温では分布が と の二つの山を持つため、相の大きさは ではなく や で見るのが実用的です。
この演習では、以下の量を保存します。
- 磁化の大きさ:
- 磁化の2乗:
- 帯磁率:
- 比熱:
- Binder parameter:
Binder parameter は次のように定義します。
Binder parameter は、全磁化 で計算しても単位スピンあたりの磁化 で計算しても同じ値になります。 高温側で は0に近づき、低温側で に近づきます。 異なる の は、有限サイズ補正を除いて 付近で交差します。
3. PLAN
実装前に、notes/ising-plan.md のような短い計画を書きます。
AI coding agent に依頼する場合も、最初にこの計画を出させ、人間が確認してから実装へ進みます。
最低限、次を決めます。
- 模型: 2次元正方格子、周期境界条件、 、 、
- 更新: 単一スピン反転の Metropolis 法
- 測定: エネルギー、磁化、その揺らぎ、Binder parameter に必要な量
- 走査: 複数の と 、特に の近傍
- 乱数: seed、熱化 sweep 数、測定 sweep 数、測定間隔
- 出力: CSV と metadata。seed、 、 、sweep 数、測定間隔を必ず保存する
- 検証: 決定的に確認できる性質と、統計的に確認する性質を分ける
関数境界や module 構成は、AI coding agent と相談して決めます。 ただし、物理的な意味がある単位に分け、単に別名を付けるだけの wrapper は避けます。 相談するときは、少なくとも次の責務がどこに入るかを確認します。
- 格子と周期境界条件
- エネルギーと磁化の計算
- 1スピン反転のエネルギー差
- Metropolis 更新
- 熱化、測定、統計量の集計
- 結果保存と metadata
- Binder parameter と有限サイズスケーリング用の後処理
4. 決定的なユニットテスト
乱数を含むシミュレーションでも、乱数に依存しない部分は決定的にテストできます。 ここではテスト項目を固定せず、AI coding agent と一緒に「どの小さい配置なら手計算できるか」「どの性質が実装ミスを見つけやすいか」を brainstorm します。
候補になる観点は次の通りです。
- 周期境界条件が正しく実装されているか。
- 小さい格子のエネルギーと磁化が手計算と一致するか。
- 1スピン反転のエネルギー差が、反転前後の全エネルギー差と一致するか。
- Metropolis の採否判定が、エネルギーが下がる場合と上がる場合で正しいか。
- 固定 seed を使ったとき、短い実行の測定列が再現するか。
実際に cargo test に入れるのは、この中から選んだ少数の本質的なテストにします。
境界条件、エネルギー差の符号、bond の二重数えはバグが入りやすいので、候補として必ず検討します。
5. 統計量の収束チェック
MCMC の結果は乱数を含むため、すべてを通常のユニットテストに押し込むと不安定になります。 決定的なテストと、統計的なチェックを分けます。
小さい格子では全配置を列挙できます。 小さい を選べば配置数 がまだ扱えるので、厳密に
を計算できます。 ここから 、 、 、 、 、 を求め、Metropolis の長時間平均と比較します。
このチェックは、通常の高速な unit test ではなく、#[ignore] を付けた統計テストや、演習用の検証スクリプトにするのが現実的です。
どの
、温度、seed 数、許容範囲にするかは、実行時間と揺らぎを見ながら AI coding agent と相談して決めます。
複数 seed の平均と標準誤差を保存し、厳密値が誤差棒の範囲に入るかを確認します。
確率的コードの自動テストを厳密に設計したい場合は、仮説検定を使う方法もあります。
6. 有限サイズスケーリング
実装後、 など複数のサイズで温度走査を行います。 まず粗い温度刻みで 近傍を探し、次に から 程度を細かく走査します。
保存した測定量から、次をプロットします。
- : 低温で非ゼロ、高温でゼロへ向かう。
- : 付近にピークを持つ。
- : 付近にピークを持つ。
- : 異なる の曲線が 付近で交差する。
2次元イジング模型では相関長指数が なので、臨界領域では概念的に
と書けます。 この演習では、厳密なスケーリング崩壊まで要求せず、Binder parameter の交差から転移点を見積もり、
と比較します。 有限サイズ補正、熱化不足、測定間隔の不足、臨界点近傍の autocorrelation の増大が、交点のずれとして現れることも確認します。
発展的な問い
低温で十分長くないシミュレーションを行うと、 がゼロにならないことがあります。 これはハミルトニアンの対称性が消えたからではありません。 有限時間の Markov chain が 側または 側の谷に長く留まり、符号反転をほとんど観測しないためです。 熱力学極限では、二つの相の間を行き来する時間が非常に長くなり、実効的にエルゴード性が破れたように見えます。
発展課題として、低温やスピンガラスのような緩和しにくい系では、複数温度の replica を同時に走らせて配置を交換する replica exchange Monte Carlo(exchange Monte Carlo, parallel tempering)を調べるとよいでしょう。 Hukushima と Nemoto の exchange Monte Carlo は、この考え方をスピンガラスに適用した代表的な仕事です。
参考リンク
- Ising model - Wikipedia
- Binder parameter - Wikipedia
- Lars Onsager, Crystal Statistics. I. A Two-Dimensional Model with an Order-Disorder Transition, Phys. Rev. 65, 117 (1944)
- C. N. Yang, The Spontaneous Magnetization of a Two-Dimensional Ising Model, Phys. Rev. 85, 808 (1952)
- K. Binder, Finite size scaling analysis of Ising model block distribution functions, Z. Phys. B 43, 119 (1981)
- Markus Wallerberger and Emanuel Gull, Hypothesis testing of scientific Monte Carlo calculations
- Koji Hukushima and Koji Nemoto, Exchange Monte Carlo Method and Application to Spin Glass Simulations