第20行: |
第20行: |
| 考虑一个如下图所示的晶格世界: | | 考虑一个如下图所示的晶格世界: |
| ===网格上的小磁针=== | | ===网格上的小磁针=== |
− | [[File:Ising.png||Ising模型示例]] | + | [[File:Ising.png||Ising模型示例|center]] |
| | | |
− | 假设第i个节点是一个小磁针(或者一个村民),每个小磁针有上下两种状态(村民有上,下两种意见),我们用<math>s_i</math>来表示这个状态,并且
| + | 假设第<math>i</math>个节点是一个小磁针(或者一个村民),每个小磁针有上下两种状态(村民有上,下两种意见),我们用<math>s_i</math>来表示这个状态,并且 |
| | | |
| | | |
− | <math> | + | :<math> |
| s_i=\left\{\begin{array}{ll} +1 & \\ | | s_i=\left\{\begin{array}{ll} +1 & \\ |
| -1 & \end{array}\right. | | -1 & \end{array}\right. |
第38行: |
第38行: |
| | | |
| | | |
− | <math> | + | :<math> |
| E_{\{s_i\}}=-J\sum_{<i,j>}{s_is_j}-H\sum_{i}^N{s_i} | | E_{\{s_i\}}=-J\sum_{<i,j>}{s_is_j}-H\sum_{i}^N{s_i} |
| </math> | | </math> |
| | | |
| | | |
− | 其中J为一个能量耦合常数,<math>E_{\{s_i\}}</math>表示系统处于状态组合<math>\{s_i\}</math>下的总能量。求和下标<math><i,j></math>表示对所有相邻的两个小磁针进行求和。我们看到,如果<math>s_i=s_j</math>,则总能量就会减少J。H表示外界磁场的强度,它是一个参数,如果外界磁场向上H为正,否则为负。如果某个小磁针的方向与外场一致,则总能量减少一个单位。
| + | 其中<math>J</math>为一个能量耦合常数,<math>E_{\{s_i\}}</math>表示系统处于状态组合<math>\{s_i\}</math>下的总能量。求和下标<math><i,j></math>表示对所有相邻的两个小磁针进行求和。我们看到,如果<math>s_i=s_j</math>,则总能量就会减少J。H表示外界磁场的强度,它是一个参数,如果外界磁场向上H为正,否则为负。如果某个小磁针的方向与外场一致,则总能量减少一个单位。 |
− | <!--newslide-->
| + | |
| | | |
| 例如,假设系统中仅仅有3个小磁针,它们彼此相连(虚线表示构成邻居关系)形成一个三角形,如图: | | 例如,假设系统中仅仅有3个小磁针,它们彼此相连(虚线表示构成邻居关系)形成一个三角形,如图: |
| | | |
− | [[File:Triangle.png ||示例]] | + | [[File:Triangle.png |center]] |
| | | |
| 每个小磁针有+1,-1两种可能状态,那么所有的状态组合就包括: | | 每个小磁针有+1,-1两种可能状态,那么所有的状态组合就包括: |
| | | |
| | | |
− | <math>\{s_i\}=\{+1+1+1,+1+1-1,+1-1+1,+1-1-1,-1-1+1,-1+1+1,-1+1-1,-1-1-1\}</math> | + | :<math>\{s_i\}=\{+1+1+1,+1+1-1,+1-1+1,+1-1-1,-1-1+1,-1+1+1,-1+1-1,-1-1-1\}</math> |
| | | |
| | | |
第59行: |
第59行: |
| | | |
| | | |
− | <math> | + | :<math> |
| E_{\{+1+1+1\}}=-J(1\times 1 + 1\times 1+ 1\times 1)-H(1+1+1)=-3J-3H, | | E_{\{+1+1+1\}}=-J(1\times 1 + 1\times 1+ 1\times 1)-H(1+1+1)=-3J-3H, |
| | | |
第65行: |
第65行: |
| </math> | | </math> |
| | | |
− | <math> | + | :<math> |
| E_{\{+1-1+1\}}=J-H, E_{\{+1-1-1\}}=J+H,E_{\{-1+1+1\}}=J-H, | | E_{\{+1-1+1\}}=J-H, E_{\{+1-1-1\}}=J+H,E_{\{-1+1+1\}}=J-H, |
| </math> | | </math> |
| | | |
− | <math> | + | :<math> |
| E_{\{-1+1-1\}}=J+H, E_{\{-1-1+1\}}=J+H, E_{\{-1-1-1\}}=-3J+3H | | E_{\{-1+1-1\}}=J+H, E_{\{-1-1+1\}}=J+H, E_{\{-1-1-1\}}=-3J+3H |
| </math> | | </math> |
第75行: |
第75行: |
| | | |
| 系统中小磁针的相互之间以及与外场方向一致的话,则系统的能量就低。所以+1+1+1为能量最小的状态。沿用村民的比喻来说,系统的能量相当于村民观点存在的冲突的数量。如果两个相邻的村民意见不一致,总冲突数就+1,否则就减1。而外场建模了观点的媒体宣传效应,如果村民的观点与舆论宣传一致,则能量越低,因此也越和谐。 | | 系统中小磁针的相互之间以及与外场方向一致的话,则系统的能量就低。所以+1+1+1为能量最小的状态。沿用村民的比喻来说,系统的能量相当于村民观点存在的冲突的数量。如果两个相邻的村民意见不一致,总冲突数就+1,否则就减1。而外场建模了观点的媒体宣传效应,如果村民的观点与舆论宣传一致,则能量越低,因此也越和谐。 |
| + | |
| | | |
| ===温度=== | | ===温度=== |
第80行: |
第81行: |
| | | |
| | | |
− | 这样,有两种力作用在小磁针上,一种力来源于小磁针邻居以及外场对它的影响,这种影响倾向于使得相邻的邻居彼此状态一致以及与外场尽量一致,即尽量使得系统的总能量达到最小。另外一种力则来源于环境噪声的扰动,它迫使小磁针无视邻居的作用而发生随机的状态反转。于是,每个小磁针就挣扎于这两种不同的力量之间。不难想象,假如温度T趋于0,则每个小磁针都会与外场相一致,那么,最终系统将处于全是+1或者全是-1的状态(取决于外场H是正还是负)。假如T特别高,而相互作用强度J特别小,则邻居间的作用可以忽略,每个小磁针都完全随机地取值。
| + | 这样,有两种力作用在小磁针上,一种力来源于小磁针邻居以及外场对它的影响,这种影响倾向于使得相邻的邻居彼此状态一致以及与外场尽量一致,即尽量使得系统的总能量达到最小。另外一种力则来源于环境噪声的扰动,它迫使小磁针无视邻居的作用而发生随机的状态反转。于是,每个小磁针就挣扎于这两种不同的力量之间。不难想象,假如温度<math>T</math>趋于0,则每个小磁针都会与外场相一致,那么,最终系统将处于全是+1或者全是-1的状态(取决于外场H是正还是负)。假如T特别高,而相互作用强度J特别小,则邻居间的作用可以忽略,每个小磁针都完全随机地取值。 |
| | | |
| | | |
− | 这样,整个ISING模型就有两个外生给定的参数<math>T,H</math>来表示环境的温度和磁场强度。在村民的比喻中,温度相当于村民进行观点选择的自由程度,温度越高,村民选择观点越随机,而不受自己周围邻居的影响;否则村民的选择严重依赖于邻居和媒体宣传。
| + | 这样,整个Ising模型就有两个外生给定的参数<math>T,H</math>来表示环境的温度和磁场强度。在村民的比喻中,温度相当于村民进行观点选择的自由程度,温度越高,村民选择观点越随机,而不受自己周围邻居的影响;否则村民的选择严重依赖于邻居和媒体宣传。 |
− | <!--newslide-->
| + | |
| | | |
| ===蒙特卡罗模拟=== | | ===蒙特卡罗模拟=== |
第91行: |
第92行: |
| 下面我们来讨论Ising模型的计算机模拟。有趣的是,Ising模型的模拟方法与我们熟悉的模拟方法很不同,它并没有为每个小磁针制定状态转变的规则,而是先让每个小磁针的状态发生随机变化,再根据能量来依概率接受这种状态变化。 | | 下面我们来讨论Ising模型的计算机模拟。有趣的是,Ising模型的模拟方法与我们熟悉的模拟方法很不同,它并没有为每个小磁针制定状态转变的规则,而是先让每个小磁针的状态发生随机变化,再根据能量来依概率接受这种状态变化。 |
| | | |
− | 具体作法是:
| |
| | | |
− | 在每一个仿真周期,模拟程序会根据当前的状态组合<math>s_{i}(t)</math>,进行小的改进(例如随机翻转某一个小磁针),得到一个新的状态组合<math>s_i'</math>。
| + | 具体作法是:在每一个仿真周期,模拟程序会根据当前的状态组合<math>s_{i}(t)</math>,进行小的改进(例如随机翻转某一个小磁针),得到一个新的状态组合<math>s_i'</math>。 |
| 但是系统下一时刻的状态并不是直接取为该状态组合,而是以概率发生: | | 但是系统下一时刻的状态并不是直接取为该状态组合,而是以概率发生: |
| | | |
− | <math>s_i(t+1)=\left\{\begin{array}{ll} s_i' & \mbox {with probability } \mu, \\
| + | :<math>s_i(t+1)=\left\{\begin{array}{ll} s_i' & \mbox {with probability } \mu, \\ |
| s_i(t) & \mbox {with probability }1-\mu.\end{array}\right.</math> | | s_i(t) & \mbox {with probability }1-\mu.\end{array}\right.</math> |
| | | |
| | | |
− | 其中概率<math>\mu</math>按照如下公式计算:
| + | 其中,概率<math>\mu</math>按照如下公式计算: |
| | | |
− | <math>
| + | :<math> |
| \mu=\min{\{\exp{((E(s_i(t))-E(s_i'))/(kT))},1\}} | | \mu=\min{\{\exp{((E(s_i(t))-E(s_i'))/(kT))},1\}} |
− | </math>
| + | </math> |
| | | |
| | | |
第110行: |
第110行: |
| | | |
| | | |
− | 按照这个接受概率规则,每一时刻,系统生成一个新的候选状态组合,然后再根据能量的大小决定是否接受它。于是,就进行了一步系统演化。
| + | 按照这个接受概率规则,每一时刻,系统生成一个新的候选状态组合,然后再根据能量的大小决定是否接受它。于是,就进行了一步系统演化。按照上述算法,系统可以最终达到如下的概率分布状态: |
− | | |
− | | |
− | <!--newslide-->
| |
| | | |
− | 为什么要按照这样的方式来模拟Ising模型的运行呢?这是因为按照上述算法,系统可以最终达到如下的概率分布状态:
| |
| | | |
− | | + | :<math> |
− | <math> | |
| p(\{s_i\})=\frac{1}{Z}\exp(-\frac{E_{\{s_i\}}}{kT}) | | p(\{s_i\})=\frac{1}{Z}\exp(-\frac{E_{\{s_i\}}}{kT}) |
| </math> | | </math> |
| | | |
| | | |
− | 这个分布就是著名的[[玻尔兹曼分布]],其中k为玻尔兹曼常数,等于<math>1.3806488\times 10^{23}</math>,<math>Z</math>为归一化因子: | + | 这个分布就是著名的[[玻尔兹曼分布]],其中<math>k</math>为玻尔兹曼常数,等于<math>1.3806488\times 10^{23}</math>,<math>Z</math>为归一化因子: |
| | | |
| | | |
− | <math> | + | :<math> |
| Z=\sum_{\{s_i\}}\exp(-\frac{E_{\{s_i\}}}{kT}) | | Z=\sum_{\{s_i\}}\exp(-\frac{E_{\{s_i\}}}{kT}) |
| </math> | | </math> |
第134行: |
第129行: |
| | | |
| | | |
− | <math> | + | :<math> |
| \sum_{\{s_i\}}p(\{s_i\})=1 | | \sum_{\{s_i\}}p(\{s_i\})=1 |
| </math> | | </math> |
| | | |
| | | |
− | 在统计物理中,Z又称为系统的[[配分函数]],它是温度T和外场H的函数,即:<math>Z(T,H)</math>。这个函数非常重要,因为它决定了系统的各种热力学性质。 | + | 在统计物理中,Z又称为系统的[[配分函数]],它是温度T和外场H的函数,即::<math>Z(T,H)</math>。这个函数非常重要,因为它决定了系统的各种热力学性质。 |
− | <!--newslide-->
| + | |
| | | |
| 在玻尔兹曼分布中,每个状态组合出现的概率将会与该状态组合下的总能量的负值呈现指数关系。也就是说,能量越小,该状态组合的出现概率也就越大。反之,出现概率会随着能量增加而快速衰减。并且温度T会对衰减速度起到调节作用。这里出现概率的具体含义是指:如果针对同样参数和初始条件的Ising模型进行多次重复试验。运行很长时间后,我们观察这些Ising模型处于什么样的状态组合,则某一状态组合在若干实验中的出现频率会接近波尔兹曼分布。用统计物理的术语来说,这些试验就称为一个[[系综]]。 | | 在玻尔兹曼分布中,每个状态组合出现的概率将会与该状态组合下的总能量的负值呈现指数关系。也就是说,能量越小,该状态组合的出现概率也就越大。反之,出现概率会随着能量增加而快速衰减。并且温度T会对衰减速度起到调节作用。这里出现概率的具体含义是指:如果针对同样参数和初始条件的Ising模型进行多次重复试验。运行很长时间后,我们观察这些Ising模型处于什么样的状态组合,则某一状态组合在若干实验中的出现频率会接近波尔兹曼分布。用统计物理的术语来说,这些试验就称为一个[[系综]]。 |
第147行: |
第142行: |
| 因为已知在现实的铁磁物质中,系统与环境的热交换构成了一个[[统计物理]]中的[[正则系统]],系统最终会达到玻尔兹曼分布的状态,所以为了模拟真实的铁磁物质,Ising模型也应该达到这个稳态分布。我们可以从数学上证明,上述随机过程的稳态分布就是根据统计力学计算出来的分布结果。这种模拟方法就是Ising模型的[[马尔科夫链-蒙特卡罗模拟]]方法(Markov Chain Monte Carlo, MCMC),也叫做[[Metropolis-Hastings算法]]。 | | 因为已知在现实的铁磁物质中,系统与环境的热交换构成了一个[[统计物理]]中的[[正则系统]],系统最终会达到玻尔兹曼分布的状态,所以为了模拟真实的铁磁物质,Ising模型也应该达到这个稳态分布。我们可以从数学上证明,上述随机过程的稳态分布就是根据统计力学计算出来的分布结果。这种模拟方法就是Ising模型的[[马尔科夫链-蒙特卡罗模拟]]方法(Markov Chain Monte Carlo, MCMC),也叫做[[Metropolis-Hastings算法]]。 |
| | | |
− | <!--newslide-->
| |
| | | |
| ====细致平衡条件==== | | ====细致平衡条件==== |
− | 和另一种常用的MCMC技巧[[吉布斯采样]](Gibbs Sampling)类似,它的状态转移矩阵也满足细致平衡条件(Detailed Balance Equations): | + | 和另一种常用的MCMC技巧[[吉布斯采样]] Gibbs Sampling类似,它的状态转移矩阵也满足细致平衡条件(Detailed Balance Equations): |
| | | |
| | | |
第156行: |
第150行: |
| | | |
| | | |
− | <math>p_x p(x,y)=p_y p(y,x)</math> | + | :<math>p_x p(x,y)=p_y p(y,x)</math> |
| | | |
| | | |
第162行: |
第156行: |
| | | |
| | | |
− | <math>\frac{p(x_0,x_1)p(x_1,x_2)...p(x_{n-1},x_n)}{p(x_1,x_0)p(x_2,x_1)...p(x_n,x_{n-1})} = \frac{p(x_0,x_n)}{p(x_n,x_0)}</math> | + | :<math>\frac{p(x_0,x_1)p(x_1,x_2)...p(x_{n-1},x_n)}{p(x_1,x_0)p(x_2,x_1)...p(x_n,x_{n-1})} = \frac{p(x_0,x_n)}{p(x_n,x_0)}</math> |
| + | |
| | | |
| 则该马尔科夫链形成的唯一平稳分布自然满足细致平衡条件的要求。 | | 则该马尔科夫链形成的唯一平稳分布自然满足细致平衡条件的要求。 |
− | | + | <br> |
| | | |
| ==模拟结果== | | ==模拟结果== |