没有合适的资源?快使用搜索试试~ 我知道了~
蒙特卡罗方法完整教程(WORD文档内附有源码).pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 183 浏览量
2022-06-15
07:19:52
上传
评论
收藏 694KB PDF 举报
温馨提示
试读
15页
。。。
资源推荐
资源详情
资源评论
Monte Carlo 方法法
§1 概述
Monte Carlo 法不同于确定性数值方法,它是用来解决数学和物理问题的非确定性的
(概率统计的或随机的)数值方法。Monte Carlo 方法(MCM),也称为
统计试验方法
,是
理论物理学两大主要学科的合并:即随机过程的概率统计理论(用于处理布朗运动或随机游
动实验)和位势理论,主要是研究均匀介质的稳定状态。它是用一系列随机数来近似解决问
题的一种方法,是通过寻找一个概率统计的相似体并用实验取样过程来获得该相似体的近似
解的处理数学问题的一种手段。运用该近似方法所获得的问题的解in spirit 更接近于物理实
验结果,而不是经典数值计算结果。
普遍认为我们当前所应用的 MC 技术,其发展约可追溯至 1944 年,尽管在早些时候仍
有许多未解决的实例。MCM 的发展归功于核武器早期工作期间 Los Alamos(美国国家实验
室中子散射研究中心)的一批科学家。Los Alamos 小组的基础工作刺激了一次巨大的学科
文化的迸发,并鼓励了 MCM 在各种问题中的应用
[2]-[4]
。“Monte Carlo”的名称取自于 Monaco
(摩纳哥)内以赌博娱乐而闻名的一座城市。
Monte Carlo 方法的应用有两种途径:仿真和取样。仿真是指提供实际随机现象的数学
上的模仿的方法。一个典型的例子就是对中子进入反应堆屏障的运动进行仿真,用随机游动
来模仿中子的锯齿形路径。取样是指通过研究少量的随机的子集来演绎大量元素的特性的方
法。例如,
f (x)
在
a x b
上的平均值可以通过间歇性随机选取的有限个数的点的平均值
来进行估计。这就是数值积分的 Monte Carlo 方法。MCM 已被成功地用于求解微分方程和
积分方程,求解本征值,矩阵转置,以及尤其用于计算多重积分。
任何本质上属随机组员的过程或系统的仿真都需要一种产生或获得随机数的方法。这种
仿真的例子在中子随机碰撞,数值统计,队列模型,战略游戏,以及其它竞赛活动中都会出
现。Monte Carlo 计算方法需要有可得的、服从特定概率分布的、随机选取的数值序列。
§2 随机数和随机变量的产生
[5]-[10]全面的论述了产生随机数的各类方法。其中较为普遍应用的产生随机数的方法
是选取一个函数
g(x)
,使其将整数变换为随机数。以某种方法选取
x
0
,并按照
x
k 1
g(x
k
)
产生下一个随机数。最一般的方程
g(x)
具有如下形式:
其中
g(x) (ax c) mod m
(1)
x
0
初始值或种子(
x
0
0
)
a
乘法器(
a 0
)
c
增值(
c 0
)
m
模数
对于
t
数位的二进制整数,其模数通常为
2
。例如,对于 31 位的计算机
m
即可取
2
t 311
。这
里
x
0
, a
和
c
都是整数,且具有相同的取值范围
m a, m c, m x
0
。所需的随机数序
x
n
便可由下式得
x
n1
(ax
n
c) mod m
(2)
该序列称为
线性同余序列
。例如,若
x
0
a c 7
且
m 10
,则该序列为
7,6,9,0,7,6,9,0…… (3)
可以证明,同余序列总会进入一个循环套;也就是说,最终总会出现一个无休止重复的数字
的循环。(3)式中序列周期长度为 4。当然,一个有用的序列必是具有相对较长周期的序列。
许多作者都用术语
乘同余法
和
混合同余法
分别指代
c 0
和
c 0
时的线性同余法。选取
x
0
, a, c
和
m
的法则可参见[6,10]。
这里我们只关心在区间
(0,1)
内服从均匀分布的随机数的产生。用字符
U
来表示这些
数字,则由式(2)可得
U
x
n1
(4)
m
这样
U
仅在数组
0,1/ m,2 / m,......, (m 1) / m
中取值。(对于区间(0,1)内的随机数,一
种快速检测其随机性的方法是看其均值是否为 0.5。其它检测方法可参见[3,6]。)产生区间
(a,b)
内均匀分布的随机数
X
,可用下式
X a (b a)U
(5)
用计算机编码产生的随机数(利用式(2)和(4))并不是完全随机的;事实上,给定
序列种子,序列的所有数字
U
都是完全可预测的。一些作者为强调这一点,将这种计算机
产生的序列称为
伪随机数
。但如果适当选取
a,c
和
m
,序列
U
的随机性便足以通过一系列
的统计检测。它们相对于真随机数具有可快速产生、需要时可再生的优点,尤其对于程序调
试。
Monte Carlo 程序中通常需要产生服从给定概率分布
F(x)
的随机变量
X
。该步可用
[6],[13]-[15]中的几种方法加以实现,其中包括
直接法
和
舍去法
。
直接法(也称反演法或变换法) ,需要转换与随机变量
X
相关的累积概率函数
F(x) prob( X x)
(即:
F(x)
为
X x
的概率)。
0 F (x) 1
显然表明,通过产生(0,1)
内均匀分布随机数
U
,经转换我们可得服从
F(x)
分布的随机样本
X
。为了得到这样的具
有概率分布
F(x)
的随机数
X
,不妨设
U F(x)
,即可得
X F
1
(U )
(6)
其中
X
具有分布函数
F(x)
。例如,若
X
是均值为
呈指数分布的随机变量,且
F (x) 1 e
x /
,0 x
(7)
在
U F(x)
中解出
X
可得
X
ln(1 U )
(8)
由于
(1 U )
本身就是区间(0,1)内的随机数,故可简写为
X
lnU
(9)
有时(6)式所需的反函数
F
1
(x)
不存在或很难获得。这种情况可用舍去法来处理。令
f (x)
dF(x)
为随机变量
X
的概率密度函数。令
a x b
时的
f (x) 0
,且
f (x)
上界
dx
为
M
(即:
f (x) M
),如图 1 所示。我们产生区间(0,1)内的两个随机数
(U
1
,U
2
)
,则
X
1
a (b a)U
1
f
1
U
2
M
(10)
分别为在(a,b)和(0,M)内均匀分布的随机数。若
f
1
f (X
1
)
(11)
则
X
1
为
X
的可选值,否则被舍去,然后再试新的一组
(U
1
,U
2
)
。如此运用舍去法,所有位
于
f (x)
以上的点都被舍去,而位于
f (x)
上或以下的点都由
X
1
a (b a)U
1
来产生
X
1
。
图 1 舍去法产生概率密度函数为
f (x)
的随机变量
例 1 设计一子程序使之产生 0,1 之间呈均匀分布的随机数
U
。用该程序产生随机变
,
其概率分布由下式给定
T (
)
1
(1 cos
),0
2
21
解: 生成
U
的子程序如图 2 所示。该子程序中,
m 2 1 2147483647, c 0,
且
a 7
5
16807
。应用种子数(如 1234),主程序中每调用一次子程序,就会生成一个随机
数
U
。种子数可取 1 到
m
间的任一整数。
剩余14页未读,继续阅读
资源评论
苦茶子12138
- 粉丝: 1w+
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功