偶然发现这个问题以及诸位大神的回答,大致看了一遍之后发现诸位的回答虽然没啥大问题,然而无论是MC还是MD,本质上都是一门技术而不是一种理论,只要是技术就必须勤加练习才能真正掌握,光说不练看再多书也没用。而上面的大多数回答都太过理论,显然对于刚入门的同学是很难看懂的。而且大部分回答也过于罗嗦,毕竟问题问的是三者的“特点”和“差异”,如果只是分别论述三者的特点,其实等于什么都没回答。
从技术的角度来讲,想要真正理解这个问题,要只要明白MD(Molecular Dynamics分子动力学)和MC(Monte Carlo蒙特卡罗)的最大差别即可:MC只需要算势能(Potential Energy),MD除了算势能还需要算力。就是因为这一最大差异,导致MC和MD的应用范围不同,特点也不同。
因为可以算力就可以算速度,所以MD的可以由当前的坐标和速度计算出下一步的坐标和速度,也就是说MD可以得到时间连续的轨迹。
因为没有力也就没有速度,所以MC只能靠随机移动来决定下一步的位置,然后通过势能的不同计算每一步的权重,或者根据前后两步势能差的大小来决定是否接受这一随机移动的概率(Metropolis MC)。
从统计学上来讲,两种方法对体系的抽样是等价的。然而MD相比MC可以得到时间连续的轨迹,所以MD可以计算的性质更多。而且MD是根据力按部就班地一步一步计算,即使是对于复杂的真实体系也很容易实现MD软件的通用化。相比而言,因为复杂体系的随机移动是非常困难的(越复杂的体系在坐标随机移动之后就越容易出现重叠,这一点是随机移动所不允许的),基本上不同的体系需要完全不同的随机移动算法,所以MC软件非常难以实现通用化。
然而MD必须计算力这一点同样也制约了MD在某些领域的应用,因为力的计算需要势能对体系坐标是连续可导的,然而并不是所有体系的都可以满足这个条件。而MC则不需要计算力,而且因为MC的实现远比MD简单,虽然没有通用的软件,针对特定体系编写一个MC程序往往也不复杂。所以MC特别适合自建模型体系的模拟,因为模型体系的势能有可能十分复杂,无法或者很难求导,而且模型体系的随机移动算法也更容易实现。
综上所述,MC和MD最根本差别就是是否算力。需要算力的MD程序更加复杂,但是可以实现通用化,且可以得到时间连续的轨迹,所以适合于模拟复杂的真实体系。而不需要算力的MC程序则比较简单,即使体系势能无法求导仍然可以模拟,但是随机移动的算法难以实现通用性,导致MC程序也很难实现通用性,所以MC更适用于模型体系。
至于KMC(动力学蒙特卡罗)我本人并没有真正用过,所以无法回答的太深。然而KMC本质上仍然是MC,使用MC计算不同“态”之间的势垒从而间接获得“动力学”,然而却仍然无法得到时间连续的轨迹。
这个问题很大,详细展开足够在一本分子模拟的教材里写满几章了,了解它们最好的方法应该是去啃书,比如分子模拟的经典教科书:"Understanding Molecular Simulation, From Algorithms to Application" by Frenkel & Smit。
这里先讨论MD和Metropolis MC, 暂不讨论Kinetic Monte Carlo (KMC)。这是因为传统的MD和MC更具可比性(为简单起见,这里MC就是指狭义上的使用Metropolis算法的蒙特卡罗,而这里谈到的MD仅限于平衡态的MD模拟,暂不讨论非平衡态的NEMD),两种方法产生的初衷都是为了计算统计力学里的系综平均:假设系综所对应的相空间的概率分布为(p为动量,q为坐标),那么对于任意平衡态热力学量M, 它的系综平均 可以表示为
(1)
说得更直白一点,传统的MD和MC基本上是在干同一件事:算积分。只不过最早的MD是在微正则系综(NVE系综)里算积分,而最早的MC是在正则系综(NVT系综)里算积分。
先说MC。众所周知,正则系综里相空间的概率分布就是玻尔兹曼分布
(2)
其中是体系的哈密顿量, 是配分函数, . 以一维线性谐振子为例,这个相空间概率分布就是下图所示,其实就是个高斯分布。
知道了概率分布,那么正则系综中任意平衡态热力学量M的系综平均 就是下面这个积分
(3)
对于(3)式中的积分,绝大多数情况下是没有解析解的,因此只能通过数值求解。最简单粗暴的用蒙特卡洛方法求解(3)式积分的方法就是在整个积分区域上均匀地随机打点,求得每一点处的值,然后对所有点求和再除以配分函数即可。例如对于一维线性谐振子,我们可以如下在相空间上均匀地打点
这种算法,的确非常简单,但效率很低。因为位于相空间中的值非常小的区域,系统处于这个区域的概率非常低,也就是说这些区域大体上来说对系综平均 的贡献是非常小的,然而在采样过程中,由于我们是随机均匀打点,这样的值非常小的点和的值非常大的点的权重是一样的。换句话说,我们浪费了不少时间在那些权重很小的点上。那么是否有这样算法,能够使产生的点的分布符合玻尔兹曼分布,也就是说,在的值非常小的区域少打点,在的值非常大的区域多打点(如下图所示),然后把每一点处的M值相加,就能得到我们需要的系综平均呢?Metropolis算法就是为了实现这样的目标产生的。关于Metropolis算法的细节,我不在这里展开,很多书籍里都有描述。
再说MD。MD是基于牛顿方程的,而从牛顿方程是可以很自然导出孤立体系在保守力作用下是能量守恒的,因此最初的MD是在微正则系综(NVE)里计算系综平均。根据统计力学的等概率假设,对于总能量为E的微正则系综,其相空间概率密度分布为
(4)
其中是体系处于能量为E时的态密度(density of state)
(5)
那么热力学量M在微正则系综里的系综平均 就是
(6)
其中V是积分的区域,也就是当能量为E时系统所占据的相空间。拿一维线性谐振子作为例子,当能量为E时其在相空间中区域对应于下图中的圆环,那么这个系综平均就是根据(6)式在对应于能量为E的圆环区域上进行积分。MD所做的,就是让粒子跑遍这个圆环上的每一个点(历经各态,ergodicity),把每一点上M的值加起来求平均,得到的就是系综平均(time average equals ensemble average, this is what we call ergodicity)。
综上,MD和MC都可看作是为计算系综平均的采样方法。采用Metropolis算法的MC不局限于在正则系综里的采样,可以应用于其他系综,比如NPT和巨正则系综。至于微正则系综,理论上也可以使用Metropolis算法,只是由于各个态之间能量相等,概率也相等,这时使用Metropolis算法不能起到加速采样的作用,等于白用。同样地,MD的采样也不局限于微正则系综,当把一个孤立体系和一个恒温器(thermostat)或者恒压器(barostat)耦合起来,就可以进行正则系综或者NPT系综里的模拟。当然,如果耦合的恒温器或者恒压器是以extended Lagrangian形式实现的话(比如Nose-Hoover Thermostat), 广义上来讲MD模拟还是可看作在一个大的微正则系综中进行。
MD和MC的比较
最后说一下KMC,我在这方面不是很懂,期盼有高人来解答。
Kinetic Monte Carlo(KMC)和主要模拟平衡态性质的MD和Metropolis MC相差就比较远了,它主要模拟系统随时间的演化而非平衡态性质。KMC的基本思想是把整个系统划分成若干个态(state),并获得态与态之间单位时间的跃迁几率(这个可以通过分子模拟或者过渡态理论来计算),然后通过具体的算法决定每一步往哪一个态跃迁,就可以模拟系统在各个态之间随时间演化。我没有做过KMC的研究,并不太了解KMC的算法,仅仅粗略看过一两篇用KMC模拟扩散的文章。以下的例子是我粗浅的理解,可能不太准确。
我们想用KMC模拟粒子在二维晶格上的扩散,并求出扩散系数。假定在单位时间步长内,粒子只能跳到它最相邻的格点。如图所示,粒子某时刻处于A格点,那么粒子下一时刻只有可能跳到B,C,D,E格点,单位时间内粒子从A跳到这些格点的跃迁几率分别为。结合这些跃迁几率,KMC的算法就可以通过生成随机数来决定粒子下一步所在的格点。在模拟足够长时间后我们可以算出粒子的均方位移(mean square displacement, MSD), 均方位移和扩散系数成正比关系,因而可以求出扩散系数。
当粒子只能在一维情况下运动(即只能从A到B或者从A到D), 并且, 这种情况下KMC其实就是在模拟一维随机游走(random walk)。
KMC的具体应用应该还很多,比如晶体生长什么的。
这个问题非常好!我之前也想过一段时间,下面就把我的理解说一下。
还是先说一下为什么我觉得这个问题好。
要理解这三个算法的不同,需要对概统里的采样方法有一点了解。一般的采样方法有
下面就分别说下题主提到的三种采样方法。
用到的一些关于微观动力学方程的知识可以在专栏里找到。
被李老师 @Yongle Li 指出微正则系综里的分子动力学是确定性算法,i.e. 哈密顿力学。不过个人理解,实际上是Langevin方程的特殊形式。由于微正则系综下不考虑能量的涨落,所以扩散过程因扩散张量 而退化到确定性过程,而扩散张量也是噪声的关联张量,因为其为0,噪声也就退化为取值为0的退化分布。因此就不需要考虑噪声项。Langevin方程退化为 ,在确定性过程中,根据Liouville定理,概率密度对应的Fokker-Planck方程的解为退化分布,取值在前面常微分方程的解上。而前面的方程即为哈密顿正则方程
部分内容见专栏
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有