イジングモデルの熱容量の推定
私はメトロポリス・ヘイスティングスアルゴリズムを作成し、現在それを2Dイジングモデルの分析結果と比較しようとしています。自由エネルギーは妥当なようですが、私が得ている熱容量はかなり離れています。
私は方程式を使用しています $C_{v}=\frac{\beta}{T}[\left<E^{2}\right>-\left<E\right>^{2}]$。使用する$\beta=1$ それを意味します $T$ のオーダーです $10^{23}$そのため、プリファクターは非常に小さくなります。私の理解では、このような高温ではエネルギーの変動は非常に大きくなりますが、私の変動はそれほど大きくありません。使っているからだと思います$16\times16$格子と有限システム上の分散(私は推測しています)は有界です。しかし、計算時間はすでに本当に遅いです(5分$10^{6}$ モンテカルロの反復)。
使ってみました $C_{v}=-\beta^{2}\frac{\partial^{2} f}{\partial \beta^{2}}$二次導関数の数値近似を使用します。しかし、私の自由エネルギー値も数値で計算されているため、負の熱容量などの無意味な結果が得られることがあります。熱容量を見積もる方法は他にあるのではないかと思いました。または、エネルギーの分散を使用することに固執している場合、どのくらいの大きさの格子が必要ですか?
回答
臨界温度を超えると、エネルギーの分散は数のように発散します $N$あなたのシステムのスピンの。比熱を推定する方がはるかに適切です$C_v/N$、熱力学的極限で正確な表現があります(マッコイとウーの本の第5章またはこのページを参照してください)。
より正確には、エネルギーの分散、より適切にはエネルギー密度の分散を直接測定することをお勧めします。 $H/N$ (どこ $H$ハミルトニアンです)。後者は、正確なソリューションと比較できます。$\operatorname{Var}_\beta(H/N) = \frac{d^2}{d\beta^2} \frac{1}{N}\log Z_{N,\beta}$、 どこ $Z_{N,\beta} = \sum_\sigma e^{-\beta H(\sigma)}$ は分配関数であり、オンサーガーの熱力学的極限の明示的な式は $\frac{1}{N}\log Z_{N,\beta}$ 上記のリンクに記載されています。
また、おっしゃる計算時間が短いことにも非常に驚いています。たとえば、Pythonではなくcを使用することを強くお勧めします。これにより、はるかに大規模なシステムを検討できるようになり、そのような単純なプログラムの場合、実装が難しくなりません。