- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算物理初步
晋中学院物理与电子工程学院
目 录
第1章 蒙特卡罗方法的应用 1
1.1 蒙特卡罗方法简介 1
1.1.1 蒲丰投针问题 1
1.1.2 计算圆周率的其它方法 3
1.2 利用蒙特卡罗法求解数值积分 6
1.2.1 定积分的蒙特卡罗算法 6
1.2.2 二重积分的蒙特卡罗算法 7
1.2.3 蒙特卡罗求一元函数的最值 7
1.3 基于蒙特卡罗的电子双缝衍射的计算机模拟
1章 蒙特卡罗方法的应用
1.1 蒙特卡罗方法简介
蒙特卡罗方法也称随机模拟方法, 有时也称作随机抽样技术或统计实验方法. 它的基本思想是:首先建立一个概率模型或随机过程, 使它的参数等于问题的解;然后利用计算机模拟该随机现象, 通过对大量模拟仿真试验的结果来分析计算所求参数, 得出实际问题的近似解.
蒙特卡罗方法的特点可归纳成三个方面:
(1) 蒙特卡罗方法及其程序结构简单.
(2) 蒙特卡罗方法的收敛性及收敛速度与问题的维数无关.
(3) 蒙特卡罗方法的适用性强, 可用在求很多解析方法或常规数值方法难解问题的低精度解.
1.1.1 蒲丰投针问题
著名的投针问题是几何概率一个早期的例子, 它是由法国科学家蒲丰(Buffon)在1777年提出的, 因而被称之为蒲丰投针问题. 蒲丰投针问题的解决不仅较典型的反映了几何概率的特征及处理方法, 而且还可以由此了解蒙特卡洛(Monte一Carlo)方法.
蒲丰投针问题:平面上画有等距离的平行线, 每两条平行线之间的距离为, 向平面任意投掷一枚长为的针, 试求针与平行线相交的概率.
解:设表示针落下后针的中点到最近的一条平行线的距离, 表示针与平行线所成的角(见下图1.1.1), 则
(1.1.1)
而针与一直线相交的充要条件是
(1.1.2)
我们把及表为平面上一点的直角坐标, 则所有基本事件可以用边长为及的矩形内的点表示出来, 而“针与直线相交”这一事件所包含的基本事件可以用图1.1.2中阴影部分内的点表示出来, 而所求概率
(1.1.3)
(1) 取白纸一张, 在上面画许多间距为的等距平行线;
(2) 取一根长度为的均匀直针, 随机地向画有平行线的纸投去, 共投次, 观察针和直线相交的次数;
浦丰投针实验模拟程序(cx1):
clear
d=2; %平行直线间隔
l=1; %针长
k=0;
n=100; %投掷次数
x1=0: 0.01: 20;
y1=2;y2=4;y3=6;y4=8;y5=10;y6=12;y7=14;y8=16;y9=18;
plot(x1,y1,-b,x1,y2,-b,x1,y3,-b,x1,y4,-b,x1,y5,-b,x1,y6,-b,x1,y7,-b,x1,y8,-b,x1,y9,-b,LineWidth,2)
while k=n
hold on
xi=unifrnd(2,18,1,1);
yi=unifrnd(2,18,1,1);
theta=unifrnd(0,2*pi,1,1);
xj=xi+cos(theta);
yj=yi+sin(theta);
xx=xi+0.5*cos(theta);
yy=yi+0.5*sin(theta);
x=[xi,xj];
y=[yi,yj];
zz=0.5*l*sin(theta);
axis([0 20 0 20])
h_point1=plot(x,y,-g,LineWidth,1);
hold on
h_point2=plot(xx,yy,.r,LineWidth,1);
pause(0.01) %暂停0.5秒
set(h_point1,color,k) %将当前直线的颜色由原来的颜色变为黑色
k=k+1;
end
图1.1.3是投掷100次的结果.
(3) 直线与针相交概率的近似值可用得到, 其中是总投针次数而是与任一直线相交的总次数, 进而由可得的近似值为.
设, Matlab实际计算程序如下(总投针数n (cx2):
clear
d=2;
l=1;
theta=pi;
n
xi=unifrnd(0,theta,n,1);
yi=unifrnd(0,d/2,n,1); %产生n个符合题意随机点的坐标(xi,yi)
=0;
y=0.5*l*sin(xi); %产生曲线上对应xi的函数值y
for i =1: n
if yi(i)=y(i)
=m+1;
文档评论(0)