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


    Ising模型哈密顿量为

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

    若取 (J=1, B=0),做 4 x 4 一共 16 个 spin 的 Ising 模型模拟,可以得到很平缓的相变曲线,如下图
    image
    曲线最左侧有些点低于低于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:

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

    3. 总结

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

    • 更大的格子上有没有类似的现象?我猜是有。
    • 一个重要的问题是,不同能量的组态数时怎么样的?或者说,态密度是怎么样的?这个问题的答案对于 Ising Model 的结果无疑是很重要的。
  • 相关阅读:
    ASP.NET MVC学习笔记-----ActionInvoker
    quartz启动报错
    THUSC 2021 游记
    C++下随机数的生成
    友链
    memset一些技巧
    CodeForces Round #705 总结&题解
    php计算两坐标距离
    vue中使用keepAlive组件缓存遇到的坑
    vue 中 keepAlive
  • 原文地址:https://www.cnblogs.com/luyi07/p/15519317.html
Copyright © 2020-2023  润新知