最近买了一本书,书上有关于蒙特卡罗(mc)方法的简单介绍,下面我就分几天时间把这书上的介绍给发上来吧。让我们广大的新手能从最基本的学起什么是蒙特卡罗方法。 1、概述 mc方法又叫做随机取样、统计模拟或统计实验方法。mc方法是一种利用随机数的统计规律来进行计算和模拟的方法。它可用于数值计算,也可用于数字仿真。在数值计算中常用于多重积分、线性方程组求解、矩阵求逆以及方程求解,包括常微分方程,偏微分方程,本征方程、非齐次线性积分方程和非线性方程等。在数字仿真方面,常用于核系统临界条件模拟、反应堆模拟以及高能物理,实验核物理、统计物理、真空、地震、生物物理和信息物理等领域。mc方法的缺点是收敛速度慢,计程长。为对mc方法有个初步的认识先看个用mc方法求圆周率的例子。 设园的半径是r,圆心位于xoy平面的(r,r)处,且内切于边长为2r的正方形中,那么显然正方形的面积是S1=4r×r,用mc方法计算圆的面积的基本思想是随机的正方形范围内部画点,若共画了N个点,而落在圆内部的有M个点,当N足够大的时候,圆的面积可为s=M/N*S1,基本方法是首先产生 两个随机数x和y其值域为[0,2r],然后进行判断(x,y)是否落在圆内 (x-r)2+(y-r)2<r2 记录下总的点数N和落在圆中的点数M,则圆的面积为S=4r2M/N,从而得pi=4×M/N 这里要注意两点:第一,两个随机数要是在矩形范围内均匀分布得。大部分计算机语言提供了随机数发生器,可产生0-1之间得均匀随机数,经过适当得变换不难变成任意值域得均匀随机数。第二,随机数得个头N必须要足够大。已确保一定得精度。负责由于统计涨落过大而使得误差很大,这是统计方法得自身得规律。 mc方法不仅能用于物理方程得数值计算,也可以用于物理过程得数字模拟。氢原子的电子云模拟就是一个简单的例证,由量子力学可以得知氢原子的s态波函数ψ=ψ(r)只是半径的函数,于θ,φ无关,而氢原子中的电子沿半径r的分布密度即电子在半径r处单位厚度球壳内出现的 几率 D=4×pi×r2×ψ2 习惯上把这种分布称作为电子云。 氢的基态1s态(n=1,l=0,m=0),有 D=1/(a1*a1*a1)4×r2×e-2r/a1 Dmax=1.1 r0=0.25nm 其中a1=5。29×10-2 nm,是D的最大值Dmax处的r值,其值是与波尔半径相同,r0是Dmax处的r值,其值与波尔半径相同。r0是D收敛处的r值,即D的收敛点。 氢的2s态(n=2,l=0,m=0)有 D=1/(8×a1*a1*a1)×(2-r/a1)2×e-r/a1 Dmax=0.14 r0=1.0nm 氢原子的3s态(n=3,l=0,m=0)有 D=1/(81×81×3×a1*a1*a1)[27-18*r/a1+2*(r/a)2]×e-2r/3a1 Dmax=0.2 r0=2.0nm 氢的电子云的模拟是依据上述的分布函数用绘图点的密度来描绘电子的概率分布函数,在氢原子例子中设随机数发生器可产生0-1的随机数,记做rand(k)(k=1,2,3……),首先利用一个随机数rand(1)来产生一个随机的电子半径轨道 r=r0*rand(1) 显然0<r<r0,由r计算出D(r)。再产生一个随机的概率判据D0=Dmax* rand(2)进行判断,如果D(r)<D0,则从新开始,否则再产生一个 随机的角度值 θ=2*pi*rand(3)。最后计算要描绘的点的坐标x=srcosθ y=srsinθ。其中s是控制图形的尺寸因子,与每纳米点数相对应。绘出点(x,y)后再从新上述的过程,经过足够多的次数电子云的图貌就由点的疏密反应出来了。
|