- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算物理随机散步
2-6 随机游走;一 Brown运动; 在描述Brown 运动时,我们将影响系统在相空间中轨迹的随机力应用于决定性运动方程,也就是把液体分子的自由度凝缩为仅用随机力代表。;对颗粒总数进行平均:;二 醉汉行走问题;x;恭函插棱厦镊萄岳滓帖养棒表悬赊洱鹰才佩刷华幂磋辱焕草聘本裁锤陨超计算物理随机散步计算物理随机散步;三 扩散的物理;任意函数的平均值可以表示为:;由于在t=0时,粒子在原点处,从而粒子位置的平均值是不随时间变化的。;pro=0.5
do i=1,nwalk
x=0.0d0
do j=1,nstep
call randomnum()
if (rand .lt. pro) then
x=x+1.0
else
x=x-1.0
end if
write(10,(I15,F15.6))j,x
sumx(j)=sumx(j)+x
sumx2(j)=sumx2(j)+x*x
end do
end do
do i=1,nstep
write(11,(I15,2F15.6))
$ i,sumx(i)/dble(nwalk),sumx2(i)/dble(nwalk)
end do;鞍靠逢录蕉客蜗砂局篷凿梦燕痹伺辅角姓泵唬生琅矾烁犬资记探缩靡枉鳃计算物理随机散步计算物理随机散步;若泊松方程及其边界条件为;其中,1/4可以解释为概率。即有:;从m点上又按判据选择周围四个点中的n点时,m点函数的估计值为: ;若按照以上随机游走的步骤,有:;其中,;上述类型的随机游走或链(chain)具有如下特征: ; 在随机游走的蒙特卡洛方法中,有一种最常用方法称为Metropolis方法。它是前面介绍过的重要抽样法的一个特殊情况。采用此方法可以产生任意分布的随机数,包括无法归一化的分布密度函数。;可以证明:只要游走所选的“过渡几率”满足如下的细致平衡条件:;操作步骤:
(1)首先选取一个试探位置,假定该点位置为xtry=xn+ηn,
其中ηn为在间隔[-δ,δ]内均匀分布的随机数。
(2)计算r =f(xtry)/f(xn)的数值。
(3)如果不等式r≥1满足,那就接受这一步游走,并取xn+1=xtry。
然后返回(1)开始对游走到xn+2点的试探。
(4)如果r1,那么就再另产生一个[0,1]区间均匀分布的随机数ξ。
(5)如果ξ r,那么也还接受这步游走,并取这步游走所到达的
点为xn+1=xtry。然后返回到步骤(1),开始下一步到达点的游走。
(6)如果ξr ,就拒绝游走到这一点,即仍留在点xn的位置不变。
(7)返回步骤(1),重新开始对??走到点的具体位置的又一次试探。 ;(1) 首先选取一个试探位置,假定该点位置为xtry=xn+ηn,
其中ηn为在间隔[-δ,δ] 内均匀分布的随机数。
步长选取原则:在游走的过程中,有1/3到1/2的试探步子被接受。; do i=1,nsamp
200 call randomnum()
deltax=delta*(0.5d0-rand)
x=x0+deltax
if ( x .lt. 0.0d0 .or. x .gt. lenr ) goto 200
racc=exp(-x)/exp(-x0)
call randomnum()
if (racc .ge. 1.0d0 .or. rand .le. racc) then
x0=x
ith=int(x/rstep)+1
nth(ith)=nth(ith)+1
ncount=ncount+1
else
goto 200
end if
end do
do i=1,nlen
x=(i-1)*rstep
write(13,(3F15.6))x,exp(-x)*rstep,nth(i)/dble(ncount)
end do
文档评论(0)