系统的状态和结构的无序度是与它的混乱程度相联系的,混乱程度愈高,其无序度愈大,反之则小。物理学中常用熵来反映孤立系统的无序度,而它们两者是怎样联系起来的呢?在这节内容中,将用蒙特卡罗(随机行走)法通过Matlab来模拟气体的扩散现象,同时观察该系统熵的变化,从中可以体会到无序度与熵的密切联系。
1.1 蒙特卡罗方法简介
蒙特卡罗(Monte-Carlo)方法是利用连续产生的无规数求解的一种计算方法。这个计算方法以概率和统计中的理论与方法作为基础,并用世界著名的摩洛哥赌城蒙特卡罗命名,这也象征性的体现了该方法的特点。这个方法在初创阶段只是作为“不得已的最后手段”来应用,但是随着计算机和计算技术的发展,蒙特卡罗方法已成为研究物理问题的重要手段,甚至有的人认为计算物理的成功来自于它能用蒙特卡罗技术很好的解决过去不能处理的热力学和量子力学问题,由此可见这一方法在物理学研究中的重要性。[1]
蒙特卡罗方法在物理工程中有着广泛的应用,例如对于分子运动学,粒子输运现象,布朗运动,放射性衰变等现象,由于问题本身有一定的无规性,同时又具有一定的统计规律性,用这个方法很合适。在核工业中大量应用蒙特卡罗方法进行许多实际问题的理论计算和计算机模拟1953年,这个方法第一次被成功的应用于解决统计热力学问题,使这个方法在统计物理学中得到广泛的应用。[2]
蒙特卡罗方法一般可分为直接蒙特卡罗法(Direct Monte Carlo)、蒙特卡罗积分(Monte Carlo integration)和麦曲罗保利斯法(Metropolis Monte Carlo)。[3]前两种方法将分别在正文和附录部分给大家介绍。第三种方法较为复杂,有兴趣的读者可以参考文献[1][3]相关内容进行学习。
1.2 随机数的产生
蒙特卡罗计算的核心是随机性,因此在计算中我们要用计算机产生的随机数模拟自然随机过程。混合同余法是产生随机序列数{r1, r2, …, rk}的常用方法。用常数a乘上前一随机数ri再加上另一常数c后除以M,取它的余数作为下一随机数ri+1:
r1(种子)的值经常由用户提供,mod是计算机为求余数所设的内置函数,这是最基本的移位操作直到获得输入数据的最不重要部分,因此我们期望舍入误差的随机性来产生随机序列[4]。由于这一过程并不是真正意义上的自然随机过程,因此这种随机数往往被称为伪随机数或赝随机数。
Matlab和其他许多计算机高级语言一样都配有自身的随即函数,其调用的语句如下:
这行语句用来产生我们需要的0~1之间平均分布的随机数。Matlab产生随机数的原理与上面类似,因此它也需要一个“种子”数来开始循环产生随机数序列。为了使每次运行时的“种子”数不同,这里通过时钟函数clock产生的时间值来作为“种子”数开始每次循环。
1.3 气体分子的随机行走
假设在一个空旷封闭的房间中心滴上一滴香水,挥发的香水分子随机的与空气中的粒子发生碰撞,最终会扩散到整个房间。这里我们将通过计算机模拟400个分子在二维平面内的随机运动情况,在Matlab中定义一个400×2的矩阵来存放这些分子的位置。其中每一行代表一个分子,第一列存放位置的x分量,类似的第二列存放其y分量。