- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 558510 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 172926
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 18
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
详细资源下载附件* @1 q" k$ W1 c4 A: \( s0 u
]& t8 a3 l& s; o3 X
2-8、蒙特卡洛模拟
! W( J! d) u( Z' ?, J+ K2 L8 l一、背景% a0 Z7 Q, m- {2 o; u% n
5 G, O) Q. R: Y 蒙特卡罗模拟方法 (Monte Carlo simulation) 诞生于上个世纪40年代美国的”曼哈顿计划”,名字来源于赌城蒙特卡罗。蒙特卡罗算法从某种意义上而言,就是一种赌博算法。
; w! d( q+ I6 ^' ~% w6 Z# ~ 它是一种基于随机试验和统计计算的数值方法,也称计算机随机模拟方法或统计模拟方法。蒙特卡罗方法的数学基础是概率论中的大数定律和中心极限定理。
+ i5 }1 R5 L* q
7 h9 f& V: [1 ~$ J8 Y/ R [& e二、算法引入
3 z; f& w/ i: @& Q' g
6 L% K" D O% L O( y" y 最早接触到这类算法应该是在高中或者初中阶段,而且是一道送分题。即在一个正方形中有一个内接圆。现在在这个正方形内抛洒豆子。已知正方形面积为S,落在正方形内的豆子总数为 MM,其中落在内接圆内的豆子总数为 NN。请估算内接圆的面积。( b l3 @2 C/ N" v' Z# D" W
- [# w/ k1 r, V+ f2 b3 M
0 z" c0 l. s) c% R, }8 r
~$ c7 C5 G8 T% [; N/ j& R
根据概率论中的大数定律可知,当随机事件发生的次数足够多的时候(趋向于正无穷),其发生频率就可作为此事件发生的概率。对于本题,当抛洒的豆子足够多的时候,落在圆中的豆子比值即可视为圆与正方形面积的比值。那么计算结果 S×N/MS×N/M 即为圆形面积。
- P* H8 w" ]' ~* w* z 这种算法需要承担一定的风险,但是比起这种算法带给我们的收益,风险其实不足为惧,同时我们也可以运用合理恰当的方式来最小化这种风险。 " \8 ^( c8 Q8 O
在建模和仿真中,应用蒙特卡罗方法主要有两部分工作:用蒙特卡罗方法模拟某一过程时,产生所需要的各种概率分布的随机变量;用统计方法把模型的数字特征估计出来,从而得到问题的数值解,即仿真结果。9 r4 M6 L4 s5 r8 I! s- ~
9 P4 K2 Y% m6 P5 _2 T) Q& I Q
解题步骤如下: 2 [4 b6 @0 `9 W# ?
1、根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致。 0 X2 a) X; Q$ R
2、根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。
- ?2 V: @- u( o 3、根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。 : h7 `0 e% _0 v# |
4、按照所建立的模型进行仿真试验、计算,求出问题的随机解。
5 D' ~2 S" P3 E 5、统计分析模拟试验结果,给出问题的概率解以及解的精度估计。
6 }2 n' W0 i. M2 N. g& \( S7 q' O$ h% {& E$ @9 ?
三、算法应用9 [8 J3 W% H6 K+ r" g' f3 S% \" @
; E- }3 W6 w) q; Z3 g$ q7 C 蒙特卡罗算法的应用领域很多,这个算法在金融学、经济学、工程学等领域得到了广泛应用。适用于 Monte−CarloMonte−Carlo 算法的问题,比较常见的有两类。一类是问题的解等价于某事件的概率,如算法引入中提到的求解圆的面积问题。另一类是判定问题,即判定某个命题是否为真,例如主元素存在性判定和素数的测试问题。 , w% }9 O+ p4 i0 W' w I& V
对于第一类算法所涉及到的问题,最多的就是定积分的求解。通常情况下我们有公式来求解各种图形的面积,当然也可以求解定积分。但是当我们遇到不规则图形以及极为复杂难以求解的定积分时,由于定积分的直观意义就是函数曲线与 xx 轴围成的图形中,y>0y>0 的面积减去 y<0y<0 的面积。同样是对于不规则面积的求解,最终我们都可以回到蒙特卡罗算法中来求解面积。
* L; ^; Z0 ]( L$ ]/ ~; m( }( W2 ~; `4 W- O- m% J5 Z
对于蒙特卡罗算法,其优缺点也是比较明显的:
9 S( [* e2 Y; [9 Q8 q, o9 K- M优点:
; A, U8 M) L9 A/ m: _1 C 1、能够比较逼真的描述具有随机性质的事物的特点及物理实验过程
# u U5 U' \" ^3 G: b; x7 H 2、受几何条件限制小
L; q, k' Z# Y& i9 T& P6 _ 3、收敛速度与问题的维数无关 0 e. O7 I; p {- l# B. r( R+ |
4、误差容易确定 & b! I* Z2 ^3 b. s3 s: }
5、程序结构简单,易于实现 # y ]2 T2 w4 L3 y0 b/ b' u9 J3 A
缺点: 7 U0 d: F; u' w: n) J, o
1、收敛速度慢 7 i' l f8 ]8 o) a& K
2、误差具有概率性
1 X+ W8 h \8 T. J; Q 3、进行模拟的前提是各输入变量是相互独立的
" D8 p1 F& t, E4 l4 c- X; k t" g4 R$ ^' H) z4 f
四、算法实例3 h4 Q& ]7 u- c g& d6 ]7 f5 e$ Y
7 \- q n4 N8 V. z$ x. Z
例1:
' G/ |2 y- o: ~- q$ R% x( d! c
6 `/ u! Y' g) C- g0 {# R; z+ _& r* p+ m2 V
在不知道求解圆面积的公式的情况下,试用蒙特卡罗法求出圆面积。
/ C8 G/ C/ t( a) C5 S" ~
* g/ I0 I1 n1 }1 X% d( ^; m7 G解答: ! q- Y' s" A+ ?" B2 [
由上文介绍可知,可在matlab中生成大量在 [0;2][0;2] 上服从均匀分布的随机数,从而模拟上文中的抛撒豆子。通过计算落在圆中的点与总点数,就可算出圆与正方形面积之比。
) x9 ? a# o k# n) `
+ x3 y4 j; m8 Z6 C, \, k! ]8 \- ] |
zan
|