作者:qmwneb946


引言:从简单规则到复杂世界的涌现

在物理学中,有时最简单的规则却能孕育出最深刻的现象。想象一下,一个由无数微小磁性粒子组成的晶格,每个粒子只有两种可能的状态:向上或向下。它们彼此之间存在微弱的相互作用,并且可能受到外部磁场的影响。听起来平平无奇?然而,正是这样一个看似极简的模型——伊辛模型(Ising Model)——却成为了理解自然界中最引人入胜的现象之一:相变(Phase Transition)的基石。

相变无处不在,从水结成冰、水沸腾成蒸汽,到磁铁失去磁性、超导体展现零电阻,它们共同的特点是宏观性质在某个临界点发生剧烈而突然的变化。而伊辛模型,以其优雅的简洁性,为我们提供了一个窥探相变微观机制的绝佳窗口。它不仅是凝聚态物理学的核心,其思想和方法也深刻影响了统计力学、信息论、神经网络、生物物理乃至金融建模等众多领域。

作为一名技术和数学博主,我将带领你踏上一段探索伊辛模型与相变现象的旅程。我们将从模型的定义开始,逐步深入到统计力学的语言,理解相变的物理内涵,探讨不同维度下模型的解析解与近似解,并通过计算模拟亲身体验其魅力。最终,我们将看到这个简单模型如何揭示了自然界中更广泛的普适性原理。

准备好了吗?让我们一起走进伊辛模型的奇妙世界!

伊辛模型的基石:自旋、相互作用与哈密顿量

伊辛模型的核心思想是将物质的微观结构抽象为一系列简单的“自旋”(spin)单元,这些单元通常排列在规则的晶格上,并且只能取有限的离散值。在最经典的二维伊辛模型中,这些自旋可以看作是微小的磁矩,每个磁矩只能指向“上”(+1)或“下”(-1)。

什么是自旋?

在伊辛模型中,每个格点 ii 上都有一个自旋变量 sis_i。对于铁磁性伊辛模型,我们通常取 si{1,+1}s_i \in \{-1, +1\}。这个抽象的“自旋”可以代表很多东西:

  • 磁矩方向:在磁性材料中,它表示原子磁矩的向上或向下。
  • 原子排列:在合金中,它可以表示一个格点上是A原子还是B原子。
  • 状态或选择:在社会学中,可以表示一个人的两种对立观点。
  • 神经元状态:在神经网络中,可以表示一个神经元的激活或抑制。

相互作用与外部场

伊辛模型假设自旋之间存在相互作用,这种相互作用通常局限于“最近邻”(nearest-neighbor)自旋之间。这意味着一个自旋只直接受到其紧邻的自旋的影响,而不受远处自旋的直接影响。这种局部相互作用是伊辛模型简洁性的关键。

此外,整个系统可能处于一个外部磁场 hh 中。外部磁场倾向于使所有自旋沿着磁场的方向排列。

哈密顿量:系统的能量描述

物理系统总是倾向于处于能量最低的状态。在伊辛模型中,系统的总能量由一个被称为哈密顿量(Hamiltonian)的函数来描述。对于一个包含 NN 个自旋的系统,其哈密顿量 HH 通常表示为:

H=Ji,jsisjhisiH = -J \sum_{\langle i,j \rangle} s_i s_j - h \sum_i s_i

我们来逐一解析这个表达式:

  • JJ:相互作用常数(Interaction Constant)。
    • 如果 J>0J > 0(铁磁性相互作用),则相邻自旋 sis_isjs_j 倾向于对齐(即 sisj=+1s_i s_j = +1 时能量更低)。这是伊辛模型通常研究的场景,它会导致在低温下出现磁化现象。
    • 如果 J<0J < 0(反铁磁性相互作用),则相邻自旋倾向于反向排列(即 sisj=1s_i s_j = -1 时能量更低)。
  • i,j\sum_{\langle i,j \rangle}:表示对所有最近邻自旋对 (si,sj)(s_i, s_j) 求和。每个这样的对只被计算一次。
  • Ji,jsisj-J \sum_{\langle i,j \rangle} s_i s_j:这是相互作用项。当相邻自旋方向一致时 (sisj=+1s_i s_j = +1),它们会降低系统的能量(因为前面有负号),这反映了铁磁性材料中同向磁矩相互吸引的趋势。
  • hh:外部磁场强度。
  • isi\sum_i s_i:表示对所有自旋求和。
  • hisi-h \sum_i s_i:这是与外部磁场相关的能量项。当自旋 sis_i 与外部磁场方向一致时(假设磁场方向定义为 +1+1),即 si=+1s_i = +1 时,此项为 h-h,能量更低。这意味着外部磁场会促使自旋沿着其方向排列。

通过这个简单的哈密顿量,伊辛模型捕捉了微观粒子之间的相互作用以及它们与外部环境的耦合。系统的宏观性质(如磁化强度)将从这些微观相互作用中涌现出来。

统计力学的语言:桥接微观与宏观

要理解伊辛模型的行为,尤其是相变现象,我们必须借助统计力学(Statistical Mechanics)的工具。统计力学是连接微观粒子行为与宏观热力学性质的桥梁。

波尔兹曼分布与配分函数

在一个处于温度 TT 的平衡态系统中,每个微观态出现的概率由波尔兹曼分布(Boltzmann Distribution)给出:

P(state)eβE(state)P(\text{state}) \propto e^{-\beta E(\text{state})}

其中 E(state)E(\text{state}) 是该微观态的能量,β=1/(kBT)\beta = 1/(k_B T)kBk_B 是玻尔兹曼常数。这个公式表明,能量越低的态出现的概率越大。

为了归一化概率,我们需要计算配分函数(Partition Function)ZZ

Z=stateseβE(state)Z = \sum_{\text{states}} e^{-\beta E(\text{state})}

配分函数是统计力学中的核心概念,它包含了系统所有可能的微观态及其对应的能量信息。一旦我们知道了配分函数,就可以推导出系统的所有宏观热力学性质。

自由能:热力学潜能

从配分函数,我们可以直接得到亥姆霍兹自由能(Helmholtz Free Energy)FF

F=kBTlnZF = -k_B T \ln Z

自由能是系统在给定温度和体积下能够做的最大有用功,它在恒温恒容条件下达到最小值。

宏观物理量

有了自由能,我们可以通过对它求导来得到各种宏观物理量:

  1. 磁化强度(Magnetization)MM:衡量系统整体磁性的强弱。在伊辛模型中,它通常定义为单位自旋的平均值:

    M=1Nisi=1N(Fh)TM = \frac{1}{N} \sum_i \langle s_i \rangle = -\frac{1}{N} \left( \frac{\partial F}{\partial h} \right)_{T}

    在没有外部磁场 h=0h=0 的情况下,如果 M0M \neq 0,则表明系统处于铁磁相(自发磁化)。

  2. 内能(Internal Energy)UU:系统的平均能量。

    U=H=(lnZβ)h=((βF)β)hU = \langle H \rangle = -\left( \frac{\partial \ln Z}{\partial \beta} \right)_{h} = \left( \frac{\partial (\beta F)}{\partial \beta} \right)_{h}

  3. 比热(Specific Heat)CC:衡量系统吸收热量的能力,通常是对内能关于温度的导数:

    C=(UT)hC = \left( \frac{\partial U}{\partial T} \right)_{h}

    在相变点附近,比热通常会有一个尖峰或发散,表明系统在吸收少量热量时温度变化剧烈。

  4. 磁化率(Magnetic Susceptibility)χ\chi:衡量系统对外部磁场响应的敏感程度,即磁化强度随磁场变化的快慢:

    χ=(Mh)T=1NkBT((isi)2isi2)\chi = \left( \frac{\partial M}{\partial h} \right)_{T} = \frac{1}{Nk_B T} \left( \langle (\sum_i s_i)^2 \rangle - \langle \sum_i s_i \rangle^2 \right)

    在相变点附近,磁化率通常会发散,表明系统在临界点对微小的磁场扰动非常敏感。

通过这些宏观量,我们可以观察到系统在不同温度下行为的变化,进而揭示相变的存在。

相变现象的奥秘:从有序到无序

相变是物质在外部条件(如温度、压力、磁场等)变化时,宏观性质发生突变的现象。伊辛模型之所以引人入胜,正是因为它能够优雅地展现这种复杂的集体行为。

什么是相变?

最直观的例子是水的固态、液态和气态之间的转化。当温度达到0摄氏度时,水会从液态转变为固态(结冰);当温度达到100摄氏度时,水会从液态转变为气态(沸腾)。这些都是相变。在相变点,系统的某些宏观性质(如密度、热容、磁化强度)会发生非解析的变化,有时是连续的,有时是跳跃的。

序参量:相变的指示器

为了描述相变,我们引入了“序参量”(Order Parameter)的概念。序参量是一个宏观物理量,它能够区分相变的两种不同相。在伊辛模型中,磁化强度 MM 就是一个典型的序参量。

  • 高温顺磁相:在高温下,热扰动能量 kBTk_B T 远大于自旋间的相互作用能量 JJ。自旋会随机取向,系统处于无序状态,平均磁化强度 M0M \approx 0。这被称为顺磁相(Paramagnetic Phase)。
  • 低温铁磁相:当温度降低到某个临界值以下时,自旋间的相互作用开始占据主导。自旋倾向于对齐,系统进入有序状态,在无外磁场下会出现非零的自发磁化强度 M0M \neq 0。这被称为铁磁相(Ferromagnetic Phase)。

当系统从顺磁相过渡到铁磁相时,序参量 MM 从零变为非零值,这正是相变的标志。

临界现象与临界温度

相变发生的特定温度或压力点称为“临界点”(Critical Point)。在伊辛模型中,我们关注的是临界温度 TcT_c。当 T>TcT > T_c 时,系统处于无序的顺磁相;当 T<TcT < T_c 时,系统处于有序的铁磁相。在 TcT_c 处,系统表现出许多异常的性质,被称为“临界现象”(Critical Phenomena):

  • 序参量的行为:磁化强度 MMTcT_c 处连续地从非零变为零(对于二级相变)。
  • 物理量的发散:比热 CC 和磁化率 χ\chiTcT_c 处会发散(趋于无穷大),或者显示出尖锐的峰值。这意味着系统在临界点对外部扰动极其敏感。
  • 长程关联:在临界点,自旋之间的关联长度(correlation length)会发散,这意味着一个自旋的方向会影响到非常远处的自旋,系统表现出宏观尺度的涨落。

自发对称破缺

伊辛模型的相变还体现了“自发对称破缺”(Spontaneous Symmetry Breaking)的概念。在哈密顿量 H=Ji,jsisjH = -J \sum_{\langle i,j \rangle} s_i s_j 中,当 h=0h=0 时,系统对于全局自旋反转 (sisis_i \to -s_i 对所有 ii) 是对称的,即能量不变。这意味着系统在宏观上是选择磁化向上还是向下,都应该具有相同的能量。

然而,当温度低于 TcT_c 时,系统会自发地选择一个方向(所有自旋倾向于向上或向下),从而破缺了这种全局对称性。尽管微观哈密顿量是对称的,但宏观基态却不再对称。这是自然界中许多复杂结构和现象起源的普适原理。

相变的类型

根据相变过程中自由能的导数是否连续,我们可以将相变分为两大类:

  • 一级相变(First-Order Phase Transition):自由能在相变点连续,但其一阶导数(如内能、体积、磁化强度)不连续,发生跳跃。例如,水结冰或沸腾。这些相变通常伴随着潜热(latent heat)的吸收或释放。
  • 二级相变(Second-Order Phase Transition):自由能及其一阶导数在相变点都连续,但二阶导数(如比热、磁化率、压缩系数)不连续或发散。伊辛模型在无外磁场下的铁磁-顺磁相变就是典型的二级相变。二级相变不伴随潜热。

伊辛模型在 h=0h=0 时的铁磁-顺磁转变就是二级相变,它为我们理解这种“连续”的宏观转变提供了完美的范例。

解构伊辛模型:从一维到高维的挑战

尽管伊辛模型看似简单,但其行为却因维度而异,计算其配分函数并推导出宏观性质的难度也截然不同。

一维伊辛模型:无相变之谜

一维伊辛模型是将自旋排列在一条线上。每个自旋只与它的两个最近邻自旋发生相互作用(如果考虑周期性边界条件,则首尾相连)。

哈密顿量

H=Ji=1Nsisi+1hi=1NsiH = -J \sum_{i=1}^N s_i s_{i+1} - h \sum_{i=1}^N s_i

(其中 sN+1=s1s_{N+1} = s_1 对于周期性边界条件)。

求解方法:转移矩阵法(Transfer Matrix Method)
一维伊辛模型可以通过巧妙的转移矩阵法精确求解。核心思想是将配分函数的求和转化为矩阵乘积的迹。
定义一个 2×22 \times 2 的转移矩阵 TT,其元素 Tsi,si+1T_{s_i, s_{i+1}} 包含了 sis_isi+1s_{i+1} 相互作用的玻尔兹曼因子:

Tsi,si+1=exp(βJsisi+1+βh2(si+si+1))T_{s_i, s_{i+1}} = \exp\left( \beta J s_i s_{i+1} + \frac{\beta h}{2} (s_i + s_{i+1}) \right)

(这里的 si,si+1s_i, s_{i+1} 取值 ±1\pm 1
那么,配分函数 ZZ 可以表示为:

Z=Tr(TN)Z = \text{Tr}(T^N)

通过对 TT 进行对角化,我们可以求出 ZZ 的精确表达式。

结果与结论
精确求解表明,在一维伊辛模型中,在任何有限温度 T>0T > 0 下,都不存在相变。换句话说,其磁化强度在 h=0h=0 时始终为零。

物理直观解释
想象一下一条由自旋组成的链。即使在低温下,要翻转一个自旋以破坏局部的铁磁排列,只需要提供 2J2J 的能量。但在翻转这个自旋之后,链条就被分成了两个区域,这两个区域内部各自有序,但彼此之间是无序的。在热力学极限(无限长链)下,只需要有限的能量就可以在链条上产生一个又一个的“畴壁”(domain wall),从而将长程有序破坏殆尽。任何有限温度下的热涨落都足以产生这些畴壁,从而阻止系统形成长程有序的铁磁相。

二维伊辛模型:Onsager的突破

与一维情况形成鲜明对比的是,二维伊辛模型在无外磁场 h=0h=0 的情况下,确实存在一个非零的临界温度 TcT_c,并在该温度下发生二级相变。当温度低于 TcT_c 时,系统会自发地磁化。

哈密顿量

H=Ji,jsisjH = -J \sum_{\langle i,j \rangle} s_i s_j

(二维晶格,最近邻相互作用,外磁场 h=0h=0

精确解
二维伊辛模型的精确解是物理学历史上一个里程碑式的成就。1944年,挪威裔美国物理学家拉斯·昂萨格(Lars Onsager)在无外磁场的情况下,给出了二维伊辛模型配分函数的精确解。这个解极其复杂,涉及到复杂的数学技巧,如对角化大型矩阵、组合数学和椭圆函数。

Onsager解的核心结果
Onsager的解不仅证明了相变的存在,还给出了临界温度的精确表达式:

kBTc=2Jln(1+2)k_B T_c = \frac{2J}{\ln(1+\sqrt{2})}

其中 kBk_B 是玻尔兹曼常数,JJ 是相互作用常数。

此外,Onsager的解还揭示了在 TcT_c 附近物理量的非寻常行为:

  • 磁化强度 M(TcT)1/8M \propto (T_c - T)^{1/8} (当 TTcT \to T_c^-
  • 比热 ClnTTcC \propto -\ln|T-T_c| (在 TcT_c 处对数发散)
  • 磁化率 χTTc7/4\chi \propto |T-T_c|^{-7/4} (在 TcT_c 处发散)

这些幂律行为中的指数(如 1/81/8, 7/47/4)被称为“临界指数”(Critical Exponents)。它们是普适的,只取决于系统的维度和对称性,而与相互作用的具体细节无关。

为什么二维有相变而一维没有?
这可以从“畴壁”的角度理解。在二维系统中,要将整个晶格的磁化方向翻转(比如从全部向上变成全部向下),你必须在整个晶格上构建一个无限长的畴壁。这意味着需要无限的能量。在有限温度下,热涨落不足以提供这种无限的能量来破坏整个系统的长程有序。因此,二维系统可以保持自发磁化。而在三维或更高维度,这种效应更加明显。

平均场理论:一种近似方法

虽然二维伊辛模型有精确解,但三维及更高维度的情况则没有。因此,我们需要近似方法。平均场理论(Mean-Field Theory)是处理这类多体问题最简单也是最重要的近似方法之一。

核心思想
平均场理论的核心思想是将一个自旋与所有其他自旋的复杂相互作用简化为与一个“平均场”(Mean Field)的相互作用。这个平均场是由所有其他自旋的平均值(即宏观磁化强度)产生的。换句话说,我们假设每个自旋 sis_i 不再与它的特定邻居 sjs_j 相互作用,而是与这些邻居的平均值 s\langle s \rangle 相互作用。

推导过程

  1. 近似哈密顿量:我们考虑一个单独的自旋 sis_i。它与周围 zz 个最近邻自旋的相互作用可以近似为与 zz 倍的平均磁化强度 m=sm = \langle s \rangle 的相互作用。

    HiMF=JsijNN(i)sjhsi=Jzmsihsi=(Jzm+h)siH_i^{\text{MF}} = -J s_i \sum_{j \in \text{NN}(i)} \langle s_j \rangle - h s_i = -J z m s_i - h s_i = -(Jzm + h)s_i

    这样,每个自旋就仿佛处于一个有效的磁场 heff=Jzm+hh_{\text{eff}} = Jzm + h 中。
  2. 自洽方程:现在,我们计算单个自旋在有效磁场 heffh_{\text{eff}} 下的平均值:

    m=si=si=±1sieβ(Jzm+h)sisi=±1eβ(Jzm+h)sim = \langle s_i \rangle = \frac{\sum_{s_i=\pm 1} s_i e^{\beta (Jzm+h)s_i}}{\sum_{s_i=\pm 1} e^{\beta (Jzm+h)s_i}}

    这正是双曲正切函数(hyperbolic tangent):

    m=tanh(β(Jzm+h))m = \tanh(\beta(Jzm + h))

    这个方程被称为自洽方程。我们假设每个自旋的平均值就是整体的平均磁化强度 mm,然后我们必须解这个方程,求出满足条件的 mm

平均场理论的预测

  • 临界温度:在 h=0h=0 时,方程变为 m=tanh(βJzm)m = \tanh(\beta Jzm)
    • 高温下,只有 m=0m=0 是稳定解。
    • 当温度降低,βJz\beta Jz 足够大时,会出现非零的 mm 解。
    • 临界温度 TcMFT_c^{\text{MF}} 可以通过在 m=0m=0 附近对 tanh(x)\tanh(x) 泰勒展开来找到:tanh(x)x\tanh(x) \approx x
      mβJzm1=βJzkBTcMF=Jzm \approx \beta Jz m \Rightarrow 1 = \beta Jz \Rightarrow k_B T_c^{\text{MF}} = Jz
    • 例如,在二维方形晶格中,z=4z=4,所以 kBTcMF=4Jk_B T_c^{\text{MF}} = 4J。而Onsager精确解是 kBTc=2J/ln(1+2)2.269Jk_B T_c = 2J/\ln(1+\sqrt{2}) \approx 2.269J。可见平均场理论高估了临界温度。

平均场理论的优点与局限性

  • 优点
    • 概念简单,易于理解。
    • 能够定性地预测相变的存在和一些基本的临界行为。
    • 适用于高维度系统(虽然临界温度通常被高估)。
  • 局限性
    • 忽略涨落:它将所有邻居替换为其平均值,从而完全忽略了自旋间的局部关联和涨落。这导致它无法正确描述临界点附近的物理行为。
    • 临界指数不准确:它预测的临界指数与精确解和实验结果不符。例如,它预测 M(TcT)1/2M \propto (T_c - T)^{1/2},而不是 1/81/8
    • 在低维(如一维)失效:由于低维系统中涨落效应更强,平均场理论在一维中错误地预测了相变。

尽管有其局限性,平均场理论仍然是理解相变概念和为更复杂理论提供起点的重要工具。

计算模拟:Monte Carlo方法探索伊辛模型

对于没有解析解的模型,或者为了直观地理解系统行为,计算模拟成为不可或缺的工具。Monte Carlo方法是统计物理中最常用的模拟技术之一,它通过随机抽样来估计物理量的平均值。

Monte Carlo模拟的基本思想

Monte Carlo方法通过在系统的微观组态空间中进行随机漫步来生成样本。对于一个处于平衡态的系统,我们希望抽样服从玻尔兹曼分布 P(state)eβE(state)P(\text{state}) \propto e^{-\beta E(\text{state})}。然而,直接从这个分布中抽样往往非常困难。

Metropolis算法:重要性采样

Metropolis算法(Metropolis-Hastings Algorithm)是一种马尔可夫链蒙特卡洛(MCMC)方法,它巧妙地解决了从复杂分布中抽样的问题。其核心思想是构建一个马尔可夫链,使得链的平稳分布就是我们想要的玻尔兹曼分布。

Metropolis算法的步骤

  1. 初始化:给系统一个初始的微观组态(例如,所有自旋向上,或随机初始化)。
  2. 迭代:重复以下步骤足够多次,直到系统达到热平衡。
    a. 选择一个自旋:随机选择一个格点 ii 上的自旋 sis_i
    b. 尝试翻转:计算翻转该自旋后(即 sisis_i \to -s_i)系统的能量变化 ΔE=EnewEold\Delta E = E_{\text{new}} - E_{\text{old}}
    对于伊辛模型,如果只翻转一个自旋 sis_i,能量变化只取决于 sis_i 和其最近邻自旋的和 jNN(i)sj\sum_{j \in \text{NN}(i)} s_j
    ΔE=E(,si,)E(,si,)\Delta E = E(\ldots, -s_i, \ldots) - E(\ldots, s_i, \ldots)
    =(JjNN(i)(si)sjh(si))(JjNN(i)sisjhsi)= \left( -J \sum_{j \in \text{NN}(i)} (-s_i)s_j - h(-s_i) \right) - \left( -J \sum_{j \in \text{NN}(i)} s_i s_j - h s_i \right)
    =2JsijNN(i)sj+2hsi= 2J s_i \sum_{j \in \text{NN}(i)} s_j + 2h s_i
    c. 接受/拒绝准则
    * 如果 ΔE0\Delta E \le 0(能量降低或不变),则接受翻转:新状态的能量更低或相同,系统倾向于这种状态。
    * 如果 ΔE>0\Delta E > 0(能量升高),则以概率 Paccept=eβΔEP_{\text{accept}} = e^{-\beta \Delta E} 接受翻转。否则拒绝翻转,保持原状态。这种概率接受机制允许系统偶尔进入高能态,从而避免陷入局部能量极小值,并确保最终达到热平衡。
  3. 热平衡与测量
    • 热平衡(Equilibration):在模拟开始阶段,系统通常处于非平衡态。需要运行一定数量的蒙特卡洛步数(MC steps)让系统达到热平衡。在此期间,不进行数据测量。
    • 测量(Measurement):系统达到热平衡后,每隔一定数量的MC步数(以减少数据之间的关联性),记录系统的宏观物理量,如总能量 UU 和总磁化强度 MM
    • 平均:对记录的这些物理量进行平均,得到其在给定温度下的平衡态平均值。

2D伊辛模型Monte Carlo模拟的Python实现

我们将用Python来实现一个简单的二维伊辛模型Monte Carlo模拟。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
import numpy as np
import matplotlib.pyplot as plt
import random

def initialize_spins(N):
"""
初始化一个 N x N 的晶格,自旋随机设置为 +1 或 -1。
"""
return np.random.choice([-1, 1], size=(N, N))

def calculate_energy(spins, J, h):
"""
计算晶格的总能量。
假设周期性边界条件。
"""
N = spins.shape[0]
energy = 0
for i in range(N):
for j in range(N):
# 相互作用项
s = spins[i, j]
# 最近邻自旋,考虑周期性边界条件
# 右邻居
right_neighbor = spins[i, (j + 1) % N]
# 下邻居
down_neighbor = spins[(i + 1) % N, j]

energy += -J * s * (right_neighbor + down_neighbor) # 每个相互作用对只计算一次

# 外部磁场项
energy += -h * s
return energy

def calculate_magnetization(spins):
"""
计算晶格的总磁化强度。
"""
return np.sum(spins)

def metropolis_step(spins, J, h, beta):
"""
执行一次 Metropolis 算法的 Monte Carlo 步。
每次选择一个随机自旋并尝试翻转。
"""
N = spins.shape[0]
i, j = random.randint(0, N - 1), random.randint(0, N - 1) # 随机选择一个自旋

current_spin = spins[i, j]

# 计算翻转该自旋后,与这个自旋相关的能量变化
# 只需考虑被翻转自旋及其最近邻的局部能量变化

# 获取最近邻自旋(考虑周期性边界条件)
neighbors_sum = (spins[(i + 1) % N, j] + spins[(i - 1 + N) % N, j] +
spins[i, (j + 1) % N] + spins[i, (j - 1 + N) % N])

# 局部能量变化 delta_E 只取决于翻转的自旋和其邻居
# E_old = -J * current_spin * neighbors_sum - h * current_spin
# E_new = -J * (-current_spin) * neighbors_sum - h * (-current_spin)
# delta_E = E_new - E_old = 2 * J * current_spin * neighbors_sum + 2 * h * current_spin

delta_E = 2 * J * current_spin * neighbors_sum + 2 * h * current_spin

if delta_E <= 0 or random.random() < np.exp(-beta * delta_E):
spins[i, j] *= -1 # 接受翻转
return delta_E # 返回能量变化
else:
return 0 # 拒绝翻转,能量不变

def run_ising_simulation(N, J, h, temperatures, mc_steps, eq_steps):
"""
运行伊辛模型模拟并收集数据。

Args:
N (int): 晶格大小 (N x N)。
J (float): 相互作用常数。
h (float): 外部磁场。
temperatures (list): 要模拟的温度列表。
mc_steps (int): 每个温度下的 Monte Carlo 步数(用于测量)。
eq_steps (int): 热平衡步数。

Returns:
tuple: (list of avg_magnetization, list of avg_energy)
"""
avg_magnetizations = []
avg_energies = []

for T in temperatures:
if T == 0: # 避免除以零
beta = np.inf
else:
beta = 1.0 / T # 假设 k_B = 1

spins = initialize_spins(N)
current_total_energy = calculate_energy(spins, J, h) # 初始化能量

# 热平衡阶段
for _ in range(eq_steps * N * N): # 每个自旋平均被尝试翻转一次为 1 MC step
delta_E = metropolis_step(spins, J, h, beta)
current_total_energy += delta_E

# 测量阶段
magnetizations_t = []
energies_t = []
for step in range(mc_steps * N * N):
delta_E = metropolis_step(spins, J, h, beta)
current_total_energy += delta_E

if step % (N * N) == 0: # 每 N*N 步(相当于尝试翻转所有自旋一次)记录数据
magnetizations_t.append(calculate_magnetization(spins) / (N * N))
energies_t.append(current_total_energy / (N * N))

avg_magnetizations.append(np.mean(magnetizations_t))
avg_energies.append(np.mean(energies_t))

return avg_magnetizations, avg_energies

# 模拟参数设置
N = 50 # 晶格大小 50x50
J = 1 # 相互作用常数,设置为 1 便于简化计算,并作为能量单位
h = 0 # 外部磁场,设置为 0 观察自发磁化
temperatures = np.linspace(0.1, 4.0, 40) # 模拟温度范围
mc_steps = 1000 # 每个温度下的测量步数
eq_steps = 500 # 热平衡步数

print(f"开始模拟 {N}x{N} 伊辛模型...")
avg_M, avg_U = run_ising_simulation(N, J, h, temperatures, mc_steps, eq_steps)
print("模拟完成!")

# 绘图
plt.figure(figsize=(12, 5))

plt.subplot(1, 2, 1)
plt.plot(temperatures, np.abs(avg_M), 'o-', markersize=4) # 通常绘制磁化强度的绝对值
plt.xlabel('温度 (T / J)', fontsize=12)
plt.ylabel('平均磁化强度 $|M|$', fontsize=12)
plt.title(f'{N}x{N} 伊辛模型磁化强度 vs 温度', fontsize=14)
plt.grid(True)

plt.subplot(1, 2, 2)
plt.plot(temperatures, avg_U, 'o-', markersize=4)
plt.xlabel('温度 (T / J)', fontsize=12)
plt.ylabel('平均能量 U', fontsize=12)
plt.title(f'{N}x{N} 伊辛模型能量 vs 温度', fontsize=14)
plt.grid(True)

plt.tight_layout()
plt.show()

# 额外计算并绘制比热和磁化率 (需要记录更多数据)
# 注意:精确计算比热和磁化率需要对能量和磁化强度进行平方平均值计算,这里仅展示基于能量和磁化强度导数的近似
# 通常来说,C = ( <E^2> - <E>^2 ) / (N*kB*T^2) 和 chi = ( <M^2> - <M>^2 ) / (N*kB*T)
# 这里仅为示意,如果需要更精确的曲线,需要修改 run_ising_simulation 来收集 <E^2> 和 <M^2>
# 为了简单,这里我们可以大致看一下能量和磁化强度曲线的斜率变化

# 磁化率近似 (数值导数)
chi_approx = -np.gradient(avg_M, temperatures)
# 比热近似 (数值导数)
C_approx = np.gradient(avg_U, temperatures)

plt.figure(figsize=(12, 5))

plt.subplot(1, 2, 1)
plt.plot(temperatures, chi_approx, 'o-', markersize=4)
plt.xlabel('温度 (T / J)', fontsize=12)
plt.ylabel('磁化率 $\chi$', fontsize=12)
plt.title(f'{N}x{N} 伊辛模型磁化率 vs 温度', fontsize=14)
plt.grid(True)
plt.ylim(bottom=0) # 磁化率应为正值

plt.subplot(1, 2, 2)
plt.plot(temperatures, C_approx, 'o-', markersize=4)
plt.xlabel('温度 (T / J)', fontsize=12)
plt.ylabel('比热 C', fontsize=12)
plt.title(f'{N}x{N} 伊辛模型比热 vs 温度', fontsize=14)
plt.grid(True)
plt.ylim(bottom=0) # 比热应为正值

plt.tight_layout()
plt.show()

代码解释

  1. initialize_spins(N):创建一个 N x N 的Numpy数组,每个元素随机为 +1-1
  2. calculate_energy(spins, J, h):计算整个晶格的总能量。注意为了避免重复计算相互作用,我们只计算右侧和下方邻居的贡献。由于哈密顿量定义中每个相互作用对只出现一次,所以这样是正确的。周期性边界条件通过 % N 实现。
  3. calculate_magnetization(spins):简单求和所有自旋得到总磁化强度。
  4. metropolis_step(spins, J, h, beta):这是Metropolis算法的核心。
    • 随机选择一个自旋 (i, j)
    • 计算如果翻转 spins[i, j],系统能量的变化 delta_E。这个计算只需要局部进行,因为只有被翻转的自旋及其邻居的相互作用能量会改变。
    • 根据 ΔE\Delta E 的正负和 exp(-beta * delta_E) 的概率来决定是否接受翻转。
  5. run_ising_simulation(...)
    • 循环遍历预设的温度列表。
    • 在每个温度下,先运行 eq_steps 步数进行热平衡,让系统达到稳定状态。
    • 然后运行 mc_steps 步数进行数据测量,每隔一定步数记录一次能量和磁化强度。
    • 最终对记录的数据求平均。
  6. 结果展示:绘制了平均磁化强度和平均能量随温度变化的曲线。你可以观察到在 T2.27J/kBT \approx 2.27 J/k_B 附近,磁化强度急剧下降,表明发生了相变。能量也表现出在临界点附近斜率的显著变化。

运行此代码,你将看到磁化强度在 T2.22.3T \approx 2.2-2.3 附近从非零值迅速下降到零,这正是二维伊辛模型的临界温度附近。能量曲线也会在该点附近呈现一个“拐点”。

伊辛模型的广阔天地:超越磁性

伊辛模型最初是为了解释铁磁性而提出的,但其简单的结构和丰富的行为使其成为一个普适性极强的模型,其应用远远超出了凝聚态物理的范畴。

统计物理的基石

  • 普适性类:伊辛模型是研究普适性(Universality)的典范。不同材料的相变虽然微观细节不同,但在临界点附近,它们的宏观行为(尤其是临界指数)却惊人地相似。这是因为在临界点,关联长度发散,系统的行为不再依赖于微观相互作用的细节,而只取决于维度和对称性等少数几个宏观特征。伊辛模型属于一个特定的普适性类,这个类别的所有系统在临界点都具有相同的临界指数。
  • 重正化群理论(Renormalization Group Theory):重正化群是一种强大的理论工具,用于理解临界现象和普适性。它通过“粗粒化”(coarse-graining)的方法,逐步消除微观尺度的涨落,从而揭示系统在宏观尺度上的有效行为。伊辛模型是发展和测试重正化群理论的理想平台。

跨学科的应用

  1. 神经网络与机器学习

    • Hopfield网络:一种联想记忆模型,其数学形式与伊辛模型非常相似。网络中的神经元状态(激活/抑制)对应于伊辛自旋(+1/-1),神经元之间的连接权重对应于伊辛相互作用 JijJ_{ij}。网络的稳定模式对应于伊辛模型的基态。
    • 玻尔兹曼机(Boltzmann Machine):一种随机神经网络模型,其概率分布也是基于玻尔兹曼分布,可用于学习复杂数据分布。
    • 受限玻尔兹曼机(Restricted Boltzmann Machine, RBM):一种更实用的玻尔兹曼机变体,在深度学习中扮演重要角色。
    • 量子计算与退火算法:伊辛模型也被用于研究量子计算中的退火算法(Quantum Annealing),例如D-Wave公司的量子计算机就直接解决伊辛形式的问题。
  2. 图像处理与计算机视觉

    • 图像去噪:将图像像素视为伊辛自旋,通过引入自旋间的相互作用(鼓励相邻像素值相似)和与原始图像数据匹配的场项,可以将图像去噪问题转化为寻找伊辛模型基态的问题。
    • 图像分割:同样可以利用伊辛模型来对图像区域进行分类和分割。
  3. 生物物理学

    • 蛋白质折叠:蛋白质的构象可以简化为一系列键角和二面角的选择,这些离散的选择可以类比为伊辛自旋,并通过相互作用来模拟蛋白质的折叠过程。
    • 神经活动建模:一些简化模型将大脑中的神经元集群活动视为一个伊辛系统,研究其同步和振荡行为。
  4. 社会学与经济学

    • 意见动力学:个体之间的相互影响可以建模为伊辛相互作用,从而研究社会群体的意见形成和传播,以及“从众效应”的出现。
    • 金融市场:对股票市场中的买卖决策进行建模,投资者之间的相互影响和外部信息可以被抽象为伊辛模型,研究市场波动和“崩盘”现象。

伊辛模型的扩展

除了经典的伊辛模型,还有许多其变体和更复杂的格子模型,它们在不同维度和对称性下展现出更丰富的物理现象:

  • Potts模型:每个格点的自旋可以取 qq 个不同的离散值(si{1,2,,q}s_i \in \{1, 2, \ldots, q\}),而不仅仅是 ±1\pm 1。当 q=2q=2 时,Potts模型退化为伊辛模型。它常用于研究更复杂的相变,如颜色相关的相变。
  • XY模型:自旋不再是简单的向上或向下,而是二维平面上的一个向量,具有连续的方向。它用于研究超流体和二维晶体中的相变。
  • Heisenberg模型:自旋是三维空间中的一个向量,具有连续的方向。它用于描述更真实的磁性材料,如各向同性磁体。

这些模型的复杂性逐渐增加,但它们都构建在与伊辛模型相似的统计物理框架之上,是理解复杂多体系统行为的重要工具。

结语:从点点微光到普适真理

从最初旨在解释铁磁性的小巧模型,到如今渗透到科学和工程各个角落的强大工具,伊辛模型以其极简的优雅和深刻的物理内涵,成为了统计物理学中最具影响力的概念之一。我们探讨了它如何将微观自旋的相互作用转化为宏观相变现象,如何用统计力学的语言进行描述,以及如何通过解析解、近似方法和数值模拟来揭示其行为。

伊辛模型的故事,是关于“涌现”的故事——从简单的局部规则中涌现出复杂的宏观模式。它告诉我们,普适性隐藏在看似无关的系统中,不同的物理系统可以在临界点附近表现出相同的临界行为。这种普适性,是理论物理学家们孜孜不倦追求的深刻真理。

无论你是物理学爱好者、计算机科学家,还是仅仅对复杂系统如何从简单规则中形成感到好奇,伊辛模型都提供了一个绝佳的起点。它不仅仅是一个物理模型,更是一种思维方式,一种理解世界各地从微观到宏观秩序和无序转换的强大框架。

我希望这篇博客文章能让你对伊辛模型和相变现象有了一个深入的理解和浓厚的兴趣。它的魅力远不止于此,还有无数的奥秘等待着我们去探索。让我们继续保持好奇心,在科学的道路上不断前行!