Ising模型的Metropolis模拟中的组态阻塞和振荡

Ising模型哈密顿量为

\[\hat{H} = - J \sum_{i,j相邻} s_i s_j - B \sum_i s_i \]

若取 \(J=1, B=1\),做 4 x 4 一共 16 个 spin 的 Ising 模型模拟,可以得到很平缓的相变曲线,如下图
Ising模型的Metropolis模拟中的组态阻塞和振荡
曲线最左侧有些点低于低于1.0,增大 Markov 链的根数,增大链的长度,都没有改善这一点。所以仔细输出中间结果仔细观察了一下,发现温度特别低的时候存在一些有趣的(不好的)情况。

1. 组态阻塞

做统计模拟的人大概喜欢叫做微观状态,我习惯了组态这个词,就这么用了。如果 Markov 链产生如下组态

----
++++
++++
----

那么,翻转任何一个spin,都会导致体系上升。所以这实际上是一个模型的亚稳态,在温度较低的时候,e.g. kT=0.1,接受概率是 \(e^{-2/0.1} = 2e-9\),所以翻不过去。这样的组态比基态温度高很多,按照Metropolis模拟的思想,这样的组态出现概率理应极低。但是,因为低温下的阻塞,Metropolis模拟的精神得不到体现。

2. 组态振荡

最低能组态 E = -32,下面这些 E = -8 的组态在低能下会不断循环。
组态1:

-++-
++++
++-+
----

组态2:

++-+
++-+
+---
++-+

组态3:

++++
+-++
---+
+-++

组态4:

+-++
----
+-++
++++

组态5:

-++-
--++
-+++
-++-

组态6:

----
-++-
+++-
++--

总而言之,4 x 4 的格子做低温 kT/J = 0.1, ..., 0.5 的时候,会有阻塞和循环现象,导致结果中有些非物理的内容。
自然有如下问题:

  • 更大的格子上有没有类似的现象?我猜是有。
  • 一个重要的问题是,不同能量的组态数时怎么样的?或者说,态密度是怎么样的?这个问题的答案对于 Ising Model 的结果无疑是很重要的。
上一篇:用python绘图


下一篇:Python 存储有缩进的XML