蒲丰投针――MonteCarlo算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
蒲丰投针――Monte Carlo 算法
背景:
蒙特卡罗方法(Monte Carlo),也称统计模拟方法,是在二次世界大战期间随着科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为基础的一类非常重要的数值计算方法。蒙特卡罗方法在应用物理、原子能、固体物理、化学、生态学、社会学以及经济行为等领域中得到广泛利用。
蒙特卡罗方法的名字来源于世界著名的赌城——摩纳哥的蒙特卡罗。其历史起源可追溯到1777年法国科学家蒲丰提出的一种计算圆周的方法——随机投针法,即著名的蒲丰投针问题。
问题:
设在平面上有一组平行线,间距为d,把一
根长L的针随机投上去,则这根针和平行线相交
的概率是多少?(其中L < d )
分析:由于L < d,所以这根针至多只能与一条平行线相交。设针的中点与最近的平行线之间的距离为y,针与平行线的夹角为θ (0 ≤θ≤π)。
相交情形不相交情形
易知针与平行线相交的充要条件是:
sin
2
L
y xθ
≤=
由于
1
[0,],[0,]
2
y dθπ
∈∈,且它们的取值均
满足平均分布。建立直角坐标系,则针与平行线
的相交条件在坐标系下就是曲线所围成的曲边梯
形区域(见右图)。所以有几何概率可知针与平行
线相交的概率是
sin d2
2
1
2
L
L
p
d
d
π
θθ
π
π
==
⎰
Monte Carlo 方法:
随机产生满足平均分布的 y 和 θ,其中1
[0,
], [0, ]2
y d θπ∈∈,判断 y 是否在曲边梯形内。重复上述试验,并统计 y 在曲边梯形内的次数 m ,其与试验次数 n 的比值即为针与平行线相交的概率的近似值。
clear;
n = 100000; L = 1; d = 2; m = 0;
for k = 1 : n
theta = rand(1)*pi; y = rand(1)*d/2;
if y < sin(theta)*L/2
m = m + 1; end end
fprintf('针与平行线相交的概率大约为 %f\n', m/n)
计算π的近似值
利用该方法可以计算 π 的近似值:
sin d 22 2
2 1n L
L m p d m d L d n π
θθπππ⇒≈=
=≈⎰
下面是一些通过蒲丰投针实验计算出来的 π 的近似值:
蒲丰投针问题的重要性并非是为了求得比其它方法更精确的π值,而是在于它是第一个用几何形式表达概率问题的例子。计算π的这一方法,不但因其新颖,奇妙而让人叫绝,而且它开创了使用随机数处理确定性数学问题的先河,是用偶然性方法去解决确定性计算的前导。