蒙特卡罗随机模拟投点法
- 格式:doc
- 大小:461.76 KB
- 文档页数:14
1_随机模拟与蒙特卡洛方法随机模拟是一种通过生成随机数来模拟现实世界情况的方法。
它广泛应用于各个领域,包括金融、工程、物理学等。
蒙特卡洛方法是一种基于随机模拟的数值计算方法,它通过大量的随机抽样来估计复杂系统的行为,并求解数值上难以解析的问题。
在本文中,我们将介绍随机模拟与蒙特卡洛方法的原理和应用,以及如何使用Python来实现这些方法。
一、随机模拟的原理随机模拟是一种通过生成随机数来模拟现实世界情况的方法。
在进行随机模拟时,我们可以通过选择不同的概率分布来生成随机数,然后根据这些随机数的取值来模拟不同的情况。
例如,在金融领域,可以使用正态分布来模拟股票价格的波动;在物理学中,可以使用均匀分布来模拟粒子的运动。
二、蒙特卡洛方法的原理蒙特卡洛方法是一种基于随机模拟的数值计算方法,它通过大量的随机抽样来估计复杂系统的行为,并求解数值上难以解析的问题。
在蒙特卡洛方法中,我们首先根据所要求解的问题,选择合适的概率分布来生成随机数,然后通过大量的随机抽样来获取系统的行为特征,最终得出数值解。
三、随机模拟与蒙特卡洛方法的应用随机模拟与蒙特卡洛方法在各个领域都有广泛的应用。
在金融领域,它可以用来模拟股票价格的波动,计算期权的价格;在工程领域,可以用来分析结构的稳定性,设计新的材料;在生物学领域,可以用来模拟蛋白质的折叠结构,预测分子的相互作用等。
Python是一种流行的编程语言,它提供了丰富的数学计算库和随机数生成函数,非常适合实现蒙特卡洛方法。
下面我们以计算π的近似值为例,介绍如何使用Python实现蒙特卡洛方法。
首先,我们可以使用random模块中的random(函数来生成[0,1)之间的随机数。
通过这个随机数,我们可以模拟在[0,1)之间均匀分布的点在单位正方形内的分布情况。
```pythonimport randominside_circle = 0for _ in range(num_points):x = random.randomy = random.randomif x**2 + y**2 <= 1:inside_circle += 1pi = 4 * inside_circle / num_pointsprint(pi)```通过运行上述代码,我们可以得到π的一个近似值。
蒙特卡洛方法与定积分计算-CAL-FENGHAI.-(YICAI)-Company One1蒙特卡洛方法与定积分计算By 邓一硕 @ 2010/03/08关键词:Monte-Carlo, 定积分, 模拟, 蒙特卡洛分类:统计计算作者信息:来自中央财经大学;统计学专业。
版权声明:本文版权归原作者所有,未经许可不得转载。
原文可能随时需要修改纰漏,全文复制转载会带来不必要的误导,若您想推荐给朋友阅读,敬请以负责的态度提供原文链接;点此查看如何在学术刊物中引用本文本文讲述一下蒙特卡洛模拟方法与定积分计算,首先从一个题目开始:设,用蒙特卡洛模拟法求定积分的值。
随机投点法设服从正方形上的均匀分布,则可知分别服从[0,1]上的均匀分布,且相互独立。
记事件,则的概率为即定积分的值就是事件出现的频率。
同时,由伯努利大数定律,我们可以用重复试验中出现的频率作为的估计值。
即将看成是正方形内的随机投点,用随机点落在区域中的频率作为定积分的近似值。
这种方法就叫随机投点法,具体做法如下:图1 随机投点法示意图1、首先产生服从上的均匀分布的个随机数(为随机投点个数,可以取很大,如)并将其配对。
2、对这对数据,记录满足不等式的个数,这就是事件发生的频数,由此可得事件发生的频率,则。
举一实例,譬如要计算,模拟次数时,R代码如下:n=10^4;x=runif(n);y=runif(n);f=function(x){exp(-x^2/2)/sqrt(2*pi)}mu_n=sum(y<f(x));J=mu_n/n;J模拟次数时,令,其余不变。
定积分的精确值和模拟值如下:表1精确值注:精确值用integrate(f,0,1)求得扩展如果你很细心,你会发现这个方法目前只适用于积分区间,且积分函数在区间上的取值也位于内的情况。
那么,对于一般区间上的定积分呢一个很明显的思路,如果我们可以将与建立代数关系就可以了。
首先,做线性变换,令,此时,,。
热辐射传输中的蒙特卡洛方法航空航天热物理所2007 年9 月21日1 蒙特卡洛方法概述1 蒙特卡洛方法概述蒙特卡洛方法是一种随机模拟方法。
将其用于辐射传热计算时,其基本思想:将辐射能量看成由大量独立的光束(光子)组成将复杂的辐射传递问题分解为发射、反射、吸收、散射等独立过程。
每一光束在系统内的传递过程,由一系列随机数确定跟踪一定量的光束,可得较为稳定的统计结果1.1 辐射传递因子辐射传递因子RDij的定义为:在一个换热系统中,由单元i辐射出去的能量被单元j 吸收的份额。
比较角系数Xij的定义:在一个换热系统中,由单元i辐射出去的能量到达单元j的份额。
===+∑∑4414144N a i i a j j jij M k k k kik V T V T RD F T RD σκσκσε辐射传递因子用于能量方程由N 个介质单元、M 个表面单元组成的热辐射系统中,介质单元i 的能量方程为辐射传递因子用于能量方程壁面单元i 的能量方程为===+∑∑441414N i i i a j j jij M k k k kik F T V T RD F T RD εσσκσε,,x y zR R R ,R R θφ如何求辐射传递因子(蒙特卡洛M-C法)首先确定光子的发射点。
需要3个参数再确定2个方向参数已知发射点和2 个方向,就能确定空间的一条直线。
在一个封闭系统内,确定光子与某一个面相交即为求直线与平面相交的空间解析几何问题。
再确定1 个吸收、反射参数,判断光子被壁面Rρ吸收或反射。
如果光子被壁面吸收,则停止跟踪,在该壁面上存入一个光子。
再进行下一个光子的模拟。
若光子被壁面反射,则再确定2个方向参数再确定空间的一条直线…,即重复上述过程。
,R R θφ如果壁面1 发射10000个光子,则当所有模拟结束后,统计每个壁面上吸收的光子数。
若壁面5 吸收了4300个光子,则4300/10000=0.43,即辐射传递因子RD15 =0.43蒙特卡洛法求辐射传递因子通常灰体表面和灰体介质的辐射特性参数随温度变化很小,即辐射传递因子与温度无关。
蒙特卡洛随机模拟蒙特卡洛模拟法简介蒙特卡洛(Monte Carlo)方法是一种应用随机数来进行计算机摸你的方法。
此方法对研究对象进行随机抽样,通过对样本值的观察统计,求得所研究系统的某些参数。
作为随机模拟方法,起源可追溯到18世纪下半叶蒲峰实验。
蒙特卡洛模拟法的应用领域蒙特卡洛模拟法的应用领域主要有:1.直接应用蒙特卡洛模拟:应用大规模的随机数列来模拟复杂系统,得到某些参数或重要指标。
2.蒙特卡洛积分:利用随机数列计算积分,维数越高,积分效率越高。
蒙特卡洛模拟法求解步骤应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问题。
解题步骤如下:1.根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。
通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。
3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。
4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。
5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。
在可靠性分析和设计中,用蒙特卡洛模拟法可以确定复杂随机变量的概率分布和数字特征,可以通过随机模拟估算系统和零件的可靠度,也可以模拟随机过程、寻求系统最优参数等。
一. 预备知识:1.随机数的产生提示:均匀分布(0, 1)U 的随机数可由C 语言或Matlab 自动产生,在此基础上可产生其他分布的随机数. 2.逆变换法:设随机变量U 服从(0,1)上的均匀分布,则)(1U F X -=的分布函数为)(x F . 步骤:(1) 产生)1,0(U 的随机数U ;(2) 计算)(1U F X -=, 则X 服从)(x F 分布. 问题:练习用此方法产生常见分布随机数.例如“指数分布,均匀分布),(b a U ”.还有其它哪种常见分布的随机数可用此方法方便产生? 3.产生离散分布随机数已知离散随机变量X 的概率分布:)2,1(,)( ===K P x X P k k ,产生随机变量X 的随机数可采用如下算法:a) 将区间[0.1]依次分为长度为 ,,21p p 的小区间 ,,21I I ;b) 产生[0,1]均匀分布随机数R ,若k I R ∈则令k x X =,重复(b),即得离散随机变量X 的随机数序列.问题:(1) 下表给出了离散分布X 的概率分布表,试产生100个随机数.X 的概率分布表(2) 用此方法给出100个二项分布(20, 0.1)B 的随机数及10个泊松分布P(1)的随机数. 4. 正态分布的抽样提示:设21,U U 是独立同分布的)1,0(U 变量,令)2sin()ln 2()2cos()ln 2(22/11222/111U U X U U X ππ-=-=则1X 与2X 独立 ,均服从标准正态分布. 步骤:(1) 由)1,0(U 独立抽取1122,U u U u ==(2) 用(*)式计算21,x x .用此方法可同时产生两个标准正态分布的随机数.问题: 有关随机数产生方法很多,查阅相关材料进行系统总结.二. 随机决策问题1.某小贩每天以一元的价格购进一种鲜花,卖出价为b 元/束,当天卖不出去的花全部损失,顾客一天内对花的需求量是随机变量, 服从泊松分布,(),0, 1, 2,,!kP X k ek k λλ-=== .其中常数λ由多日销售量的平均值来估计, 问小贩每天应购进多少束鲜花?(准则:期望收入S(u)最高) 问题:(1) 在给定 1.25, 50b λ==的值后, 画出目标函数S(u)连线散点图, 观察单调性,给出最优决策*u ;(2) 选取其他的λ,b ,再观察S(u)的单调性;(3) 用计算机模拟方法来求出最优决策*u .对固定的u ,例如,u=40,对随机变量X 模拟100次,每次模拟得到一个收入,求出100个收入的平均值,即得到在决策u=40情况下的可能收入;(4) 对所有的可能的u ,重复(3),从中找最大的,并与(1)的结果相比较. 3.一重定积分的蒙特卡罗算法问题描述:假设函数()f x 在[,]a b 内有界连续,且()0f x ≥,求解定积分()baI f x dx =⎰.为计算出其值,可构造概率模型如下:取一个边长分别为b a -和c 的矩形D ,使曲边梯形在矩形域之内,如图2,并在矩形内随机投点,假设随机点均匀地落在整个矩形之内,则落在图中灰色区域内的随机点数k 与投点总数N 之比k/N 就近似地等于曲线下方面积(即阴影面积)与矩形面积之比,从而得出近似积分()kI b a c N≈-.图2例 求211x e--⎰由于2x e -是非初等函数,我们很难求出其原函数,所以用牛顿-莱布尼茨公式无法求解,但可以运用蒙特卡罗方法求出其近似值.将上述方法推广到一般情况:假设函数()f x 在[a ,b]内有界连续,对于定积分()baI f x dx =⎰,为计算出其值,可构造如下概率模型:取一个边长分别为b a -和c d -的矩形D ,使曲线[,]a b 段的值在矩形域之内,如图3,并在矩形内随机投点,假设随机点均匀地落在整个矩形之内,则落在图中x 轴上下灰色区域内的随机点数m 与n 的差与投点总数p 之比(m-n)/P 就近似地等于曲线上下方面积之差(即阴影面积之差)与矩形面积之比,从而得出近似积分()()m nI b a c d P-≈--.图34. 二重积分的蒙特卡罗算法问题描述:实际计算中常常要遇到如(,)Df x y dxdy ⎰⎰的二重积分,发现被积函数的原函数往往很难求出,或者原函数根本就不是初等函数,对于这样的重积分,蒙特卡罗方法也有成熟的计算方法. 方法1: 步骤:1,取一个包含D 的矩形区域Ω:,a x b c y d ≤≤≤≤,面积()()A b a d c =--;2,(,), 1,2,,i i x y i n = ,为Ω上的均匀分布随机数列,不妨设(,),1,2,i i x y i n = ()为落在D 中的n 个随机数,则n 充分大时,有1(,)(,)ki i i DA f x y dxdy f x y n =≈∑⎰⎰.方法2: 对二重积分(,)AI f x y dxdy =⎰⎰,假设(,)f x y 为区域A 上的有界函数,且(,)0f x y ≥,几何意义对应的是以(,)f x y 为曲面顶, A 为底的曲顶柱体C 的体积.因此,用均匀随机数计算二重积分的蒙特卡罗方法基本思路为:假设曲顶柱体C 包含在己知体积为DV的几何体D 的内部,在D 内产生N 个均匀随机点,统计出在C 内部的随机点数目C N ,则DC V I N N=.例:计算(1Adxdy +⎰⎰,其中22{(,)|1}A x y x y =+≤.分析:该二重积分可以看作以1+曲顶柱体在一个边长为2的立方体内,用数学分析方法可计算出其精确值为π.。
蒙特卡洛算法算法简介:蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。
是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。
蒙特·卡罗方法的名字来源于摩纳哥的一个城市蒙地卡罗,该城市以赌博业闻名,而蒙特·卡罗方法正是以概率为基础的方法。
与它对应的是确定性算法。
蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。
背景知识:蒙特卡洛是摩纳哥公国第一大城市,与澳门、美国拉斯维加斯并称世界三大赌城。
位于地中海沿岸,首都摩纳哥之北,建于阿尔卑斯山脉突出地中海的悬崖之上。
景色优美,是地中海地区旅游胜地。
市内建有豪华的旅馆、俱乐部、歌剧院、商店、游泳池、温泉浴室、运动场等娱乐设施。
城内开设有蒙特卡洛大赌场。
赌场建于1865年,为双层楼建筑,上有钟楼、塔厅和拱形亭阁,还饰以若干人物雕塑,庭前棕榈树成行,还辟有花园,旁边有大酒店和酒吧间。
整个城市在旺季时,约有赌场70多个,约有赌室3500间左右。
蒙特卡罗赌场由国家经营。
当地的其他活动,许多也带有赌博色彩。
游客住的旅店房间,有抽奖的号码,中奖的免付部分房费。
早餐的牛奶麦片粥里,如遇上金属牌子,亦可领奖。
该城只有1万人口,但每天报纸销量可达100万份,因为报纸上都印有可能得奖的号码。
游客最后离境,购买的车票上也印有彩票号码,于离境前开彩。
经营赌业是摩纳哥的主要经济来源,每年都从赌业中收取高额外汇利润。
蒙特卡洛算法简单描述:以概率和统计理论方法为基础的一种计算方法。
将所求解的问题同一定的概率模型相联系,用计算机实现统计模拟或抽样,以获得问题的近似解。
比如,给定x=a,和x=b,你要求某一曲线f和这两竖线,及x轴围成的面积,你可以起定y轴一横线y=c 其中c>=f(a) and c>=f(b),很简单的,你可以求出y=c,x=a,x=b,及x轴围成的矩形面积,然后利用随机参生生大量在这个矩形范围之类的点,统计出现在曲线上部点数和出现在曲线下部点的数目,记为:doteUpCount,nodeDownCount,然后所要求的面积可以近似为doteDownCounts所占比例*矩形面积。
蒙特卡洛随机模拟方法摘要:蒙特卡洛随机模拟方法是一种通过随机采样和统计分析来解决数学问题的方法。
本文将从蒙特卡洛方法的起源、原理、应用以及优缺点等方面进行全面、详细、完整且深入地探讨。
1. 引言蒙特卡洛随机模拟方法是20世纪40年代由于法国科学家Stanislaw Ulam和美国科学家John von Neumann等人共同发展起来的一种重要的计算方法。
该方法通过随机数生成和统计分析的过程,模拟复杂的随机现象,解决各种数学问题,应用于各个领域。
2. 原理蒙特卡洛随机模拟方法基于大数定律和中心极限定理,通过生成大量的随机样本,对概率分布进行模拟和逼近,从而得到所求问题的近似解。
其基本原理可以归纳为以下几个步骤:1.建立数学模型:确定问题的数学模型,并将其转化为可计算的形式。
2.生成随机数:根据概率分布和随机数生成器,产生满足要求的随机数。
3.模拟实验:根据生成的随机数,进行模拟实验,并记录相应的结果。
4.统计分析:对模拟实验的结果进行统计分析,得到所求问题的近似解。
3. 应用蒙特卡洛随机模拟方法在各个领域有着广泛的应用,以下列举了部分典型的应用场景:3.1 金融领域蒙特卡洛方法在金融领域中被广泛应用于风险评估、期权定价、投资组合优化等问题。
通过模拟股价的随机波动,可以对不同的金融产品进行风险评估,提供决策支持。
3.2 物理学领域在物理学领域,蒙特卡洛方法被用于模拟粒子的运动轨迹、计算量子态的性质等问题。
通过生成大量的随机数,可以模拟复杂的物理过程,得到实验无法观测到的信息。
3.3 生物学领域生物学中的蒙特卡洛方法主要应用于蛋白质结构预测、基因表达调控网络的建模等问题。
通过随机模拟分子的运动,可以预测蛋白质的折叠结构,并推断其功能和相互作用关系。
3.4 工程领域在工程领域,蒙特卡洛方法通常用于模拟复杂系统的可靠性和优化设计。
通过对系统的不确定性进行随机抽样和模拟,可以评估系统的可靠性,并进行可靠性设计和优化。
蒙特卡洛类方法
蒙特卡洛方法是一类随机化的计算方法,主要应用于求出高维度空间中的定积分或概率分布的特性。
该方法以随机样本为基础,通过大量生成且符合某种分布律的随机数,从中抽取样本,利用样本的统计性质来计算近似解。
常见的蒙特卡洛方法包括:
1.随机模拟法
在数学建模、广告投放、经济预测等领域,随机模拟(也称蒙特卡罗方法)已经成为了一个重要的工具。
其基本思想是,系统表现出的某些规律和性质可以用随机过程进行模拟和预测。
2.随机游走算法
随机游走是一种基于随机过程的数值计算算法,通过简单的偏随机移动来解决复杂问题,被广泛应用于物理、化学、生物学、金融等领域。
随机游走算法的核心思想是通过随机漫步遍历所有可能的状态,找到最终解。
3.马尔可夫链蒙特卡罗方法
马尔可夫链蒙特卡罗方法(MCMC)是一种近似随机模拟算法,用于计算高维空间中的积分和概率分布。
这种方法通过构造一个马尔可夫链来模拟复杂的概率
分布,并通过观察链的过程来获得所求的统计量。
4.重要性采样
重要性采样是一种通过迭代抽样来估算积分值或概率分布的方法。
它的基本思想是利用不同的概率分布来采样目标分布中的样本,从而增加目标分布中采样到重要样本的概率,从而提高采样的效率。
总之,蒙特卡洛方法在物理学、统计学、金融学、计算机科学、生物科学等众多领域都有广泛的应用,是一种很实用的工具。
蒙特卡洛方法蒙特卡洛方法是一种基于概率和统计的数值计算方法,常用于解决复杂的数学和物理问题。
它的原理是通过随机抽样来估计数学模型中的未知量,从而得到近似解。
该方法非常灵活,可以应用于各种领域,例如金融学、物理学、计算机科学等。
蒙特卡洛方法的命名源于摩纳哥的蒙特卡洛赌场,因为这种方法采用了赌场中使用的随机抽样技术。
20世纪40年代,由于原子弹的研制需求,蒙特卡洛方法开始应用于物理学领域。
当时,美国科学家在洛斯阿拉莫斯国家实验室利用蒙特卡洛方法模拟了中子输运过程,为原子弹的研发提供了重要支持。
蒙特卡洛方法最简单的例子是估算圆周率π的值。
我们可以在一个正方形内随机投放一些点,然后统计落入圆内的点的比例。
根据概率理论,圆的面积与正方形的面积之比等于落入圆内的点的数量与总点数之比。
通过这种方法,可以得到一个逼近π的值,随着投放点数的增加,逼近结果将越来越精确。
除了估算圆周率,蒙特卡洛方法还可以用于解决更为复杂的问题。
例如,在金融学中,蒙特卡洛方法常用于计算期权的价格。
期权是一种金融衍生品,它的价格与未来股票价格的波动性有关。
利用蒙特卡洛方法,可以通过随机模拟股票价格的变化来估计期权的价值。
在物理学中,蒙特卡洛方法可以用于模拟复杂的粒子系统。
例如,科学家可以通过模拟蒙特卡洛抽样来研究原子、分子的运动方式,从而揭示它们的行为规律。
这对于理解材料的性质、开发新的药物等具有重要意义。
在计算机科学领域,蒙特卡洛方法也有着广泛的应用。
例如,在人工智能中,蒙特卡洛树搜索算法常用于决策过程的优化。
通过模拟随机抽样,可以得到各种决策结果的估计值,并选择给出最佳决策的路径。
尽管蒙特卡洛方法有着广泛的应用,但它并不是解决所有问题的万能方法。
在实际应用中,蒙特卡洛方法往往需要耗费大量的计算资源和时间。
此外,它也依赖于随机抽样过程,因此可能会引入一定的误差。
因此,在使用蒙特卡洛方法时,需要在效率和精确性之间做出权衡。
总之,蒙特卡洛方法是一种基于概率和统计的数值计算方法,通过随机抽样来估计数学模型中的未知量。
蒙特卡洛投点法计算pi( π )的值
蒙特卡洛投点法是一种常用的数值计算方法,用于计算复杂问题的数值解,特别是在物理学、工程学和统计学等领域中。
该方法的主要思想是,通过在随机数生成器中生成大量随机数,并利用这些随机数模拟真实数据,从而得到问题的数值解。
对于计算π(π) 的值,可以使用蒙特卡洛投点法进行计算。
具体步骤如下:
1. 构造一个π(π) 的模拟模型,该模型应该能够模拟π(π) 的真实特性,例如可以通过构造一个包含π(π) 的方程组来进行模拟。
2. 在模拟模型中生成大量随机数,这些随机数应该足够多地覆盖π(π) 的真实值。
3. 计算π(π) 的模拟值,可以使用任何π(π) 的估计方法来进行计算,例如可以使用三角函数估计法、指数估计法或对数估计法等。
4. 对模拟值进行统计分析,例如可以使用平均值、标准差或其他统计量来进行计算。
5. 根据模拟值和统计分析结果,计算π(π) 的真实值。
蒙特卡洛投点法是一种高效的数值计算方法,可以用于计算π(π) 的真实值。
但由于π(π) 的值非常小,因此需要生成大量的随机数才能得到可靠的计算结果。
蒙特卡罗随机模拟投点法在数字积分中的应用数学与应用数学0901班:张瑞宸指导老师:任明慧摘要:本文首先介绍了蒙特卡罗方法的产生和发展,然后分析了蒙特卡罗方法计算数值积分的理论原理,最后给出了蒙特卡罗方法计算数值积分的MATLAB编程实现,全文主要是讨论了蒙特卡罗方法在定积分计算的应用。
而蒙特卡罗的优点:可以计算被积函数非常复杂的定积分、重积分,并且维数没有限制,这是别的数值积分方法还未达到的。
蒙特卡罗的缺点:收敛速度慢,误差一般较大,且是概率的误差,不是真正的误差。
关键词:蒙特卡罗方法,均值估计法,数值积分,Matlab编程Abstract:This paper first introduces the emergence and development of the Monte Carlo method, and then analyze the theoretical principles of Monte Carlo numerical integration method, Full-text mainly discussed the application of the Monte Carlo method in the definite integral. The advantages of Monte Carlo: can be calculated the integrable functions very complex definite integral, Multiple integrals, and dimension no limit, other numerical integration methods have not yet reached. Monte Carlo Disadvantages: slow convergence speed, error generally higher, and the probability of error, not a real error.Keywords: Monte Carlo method,Mean estimation method,numerical integral,Matlab programming0 引言历史上有记载的蒙特卡罗试验始于十八世纪末期(约1777年),当时布丰(Buffon)为了计算圆周率,设计了一个“投针试验”,后文会给出。
虽然方法已经存在了200多年,此方法命名为蒙特卡罗则是在二十世纪四十年,美国原子弹计划的一个子项目需要使用蒙特卡罗方法模拟中子对某种特殊材料的穿透作用。
出于保密缘故,每个项目都要一个代号,传闻命名代号时,项目负责人之一von Neumann 灵犀一点选择摩洛哥著名赌城 蒙特卡罗(Monte Carlo ) 作为该项目名称,自此这种方法也就被命名为Monte Carlo 方法广为流传。
蒙特卡罗方法,又名随机模拟法或统计实验法它是以概率统计理论为基础,依据大数定律(样本均值替代总体均值)利用电子计算机数字模拟技术,解决一些很难直接用数学运算求解或用其他方法不能解决的复杂问题的一种近似计算法。
本世纪40年代电子计算机的出现,特别是近年来高速电子计算机的出现,使得用数学方法在计算机上大量、快速地模拟这样的试验成为可能。
通常蒙特卡罗方法通过构造符合一定规则的随机数来解决数学上的各种问题。
对于那些由于计算过于复杂而难以得到解析解或者根本没有解析解的问题,蒙特卡罗方法是一种有效的求出数值解的方法。
一般蒙特卡罗法在数学中最常见的应用就是蒙特卡罗随机投点和蒙特卡罗数值积分。
1 蒙特卡罗方法的产生与发展蒙特卡罗方法是在二战期间产生和发展起来的他的奠基者是美籍匈牙利人数学家冯诺伊曼(J.Von Neumann 1903-1957)由于通常计算量相当大而电子计算机在当时还没有出现,所有运算只能用手工进行,故而相当长的时间里蒙特卡罗方法难以推广。
1.1 蒙特卡罗方法的产生作为蒙特卡罗方法的最初应用,是解决蒲丰氏问题1777 年,法国数学家Buffon 提出利用投针实验求解的问题:设平面上有无数多条距离为 1 的等距平行线,现向该平面随机的投掷一根长度为()1l l ≤的针。
随机投针是指针的中心点于最近的平行线间的距离x 均匀分布在[0,1/2]上,针与平行线的夹角ϕ(不管相交与否)均匀分布在[]0,π上,如图一所示,故而,故其1~(0,)2x U ,~(0,)U ϕπ概率密度函数分别为11(),()2p x p ϕπ==。
故我们得到针与线相交的充要条件是2sin lx ≤ϕ图1.1 针与线相交的几种情况则针与线相交的概率是(sin )2lp x ϕ≤=sin sin 2202()()llp x p dxd πϕπϕϕϕπ=⎰⎰⎰⎰=222.sin 2l l d πϕϕππ=⎰所以得到圆周率222(sin )ll lp x pπϕ==≤。
假如我们能做大量的投针实验并记录下针与线的相交次数,则可以根据大数定律估计出针线相交的概率P 。
投针实验N 次可能有n 次使针与任意平行线相交, 那么np N≈,显然,试验次数N 越多,P 的近似程度越好。
历史上曾有几位学者做过这样的投针试验,并用手工计算出π值,结果参见表1。
表 1 实验者 时间(年) 针长l 投针次数 相交次数 π估计值Wolf 1850 0.80 5000 2532 3.15956 Smith 1855 0.60 3024 1218 3.15665 Fox18840.75 1030 489 3.15951 Lazzarini 19250.83340818083.14159292 应该指出,上述试验的精度一般不会很高。
譬如,假设21,p l π==则。
则由中心极限定理,如果试验次数为N ,则p 的估计值ˆp渐进服从(1)(,)p p N p N-,近似为0.2313(0.6366,)N N。
因此,若要以95%的概率保证p 的精确到三位有效数字,即ˆp 与p 的差距小于0.001,则N 必须满足N ≥2251.960.2313/0.0018.8910⨯≈⨯。
重复进行上千次的投针实验和手工计算,要消耗大量的人力、财力,蒙特卡罗方法虽然能解决此类问题,但得不到推广应用。
1.2 蒙特卡罗方法的发展20世纪40年代以后,随着电子计算机的出现和发展,人们有可能用计算机来模拟这类实验和计算。
计算机具有计算速度高和存储容量大的特点,采用数字模拟技术可以代替许多实际上非常庞大而复杂的实验,并迅速将实验结果进行运算处理,于是Monte Carlo 方法重新被提起,引起世人重视,应用日渐广泛。
实际上,采用Monte Carlo 方法在计算机上建立模型来解决Buffon 问题是非常简单的。
我们在计算机上进行模拟试验,给定l ,我们可以在计算机上随机产生x 和φ,然后判断2sin l x ≤ϕ是否成立。
若成立,则针线相交,否则不交。
假如我们在计算机上独立的产生N 对这样的x 和ϕ,并记录下2sin lx ≤ϕ成立的次数,记为n 。
则π估计值可取为22lN ⨯⨯,这就是随机模拟计算的结果。
借助Matlab 在计算机上进行投针实验,(相应程序见附录1) 所取得的计算结果参见表2。
表 2其中π = 3.1416。
不难看出,利用计算机运算不仅结果精确,而且迅速。
随着电子计算机的普及,蒙特卡罗方法作为一种独到的方法得到开发,并首先应用到核武器的试验与研制中。
尤其是各种可是编程方法的不断涌现,更显示出蒙特卡罗方法的最独到的优点,即形象直观地用数学方法在电子计算机上实现数字模拟实验。
2 蒙特卡罗方法计算数值积分的理论原理随机模拟是一种随机试验的方法,也称为蒙特卡罗方法(Monte Carlo )]1[。
这种方法利用随机试验,根据频率与概率、平均值与期望值等之间的关系,推断出预期的结果。
2.1 蒙特卡罗算法的理论原理随机模拟法的基本原理非常简单,下面给以直观的说明。
首先构造一个定积分π=-⎰1214dx x ,其中积分⎰-=121dx x S (即1/4单位圆的面积)用随机模拟方法求得。
图2.1中粗线是1/4单位圆,如果向图2.1中边长为1的正方形里随机投n 块小石头,当n 很大时小石头会大致均匀地分布在正方形中,数一下落在1/4单位圆内的小石头,假定有k 个,那么k /n 就可以看作1/4单位圆面积π/4的近似值。
小石头的位置坐标可以用产生均匀分布随机数的程序得到,记为),...,2,1(,n i y x i i =是[0,1]区间均匀分布随机数(i i y x ,相互独立),记录满足),...,2,1(122n i y x i i =≤+的数量k ,即得π=4k /n 。
我们用概率论中的大数定律来说明这个直观认识的原理。
大数定律(伯努利(Bernoull )定理)]2[ 设k 是n 次独立重复试验中事件A 发生的次数,p 是事件A 每次试验中发生的概率,则对任意的正数ε,有1lim =⎭⎬⎫⎩⎨⎧<-∞→εp n k P n (1) 若规定“向图中正方形随机投一块小石头落在四分之一单位圆里”为事件A 发生,则A 发生的概率p 应该等于四分之一单位圆面积,随机投n 块石头就是独立重复做n 次试验,事件A 发生k 次,由(1)式,n 无限变大时k /n 与p 之差小于任意一个数ε的概率趋于1。
用计算机算一下就会发现,即使n 很大结果也不好,并且很不稳定,远不如常规数值积分的几种方法。
实际上,随机模拟法很少用来做定积分,它的特点是能够方便地推广到计算多重积分,而不少多重积分是其他方法很难或者根本无法计算的。
2.2 蒙特卡罗方法计算定积分的理论原理通常有两类办法计算定积分。
(1)随机投点法在“投石算面积”的例子中,事件A 在每次试验中发生的概率p 是四分之一单位圆面积,即dxx dydx p x ⎰⎰⎰-==-12101012(2)n 次试验由计算机完成,采用[0,1]区间上的均匀分布产生相互独立的随机数。
记这样产生的n 个点的坐标为),...,2,1),(n i y x i i =。
事件A 发生等价于),(i i y x 满足21i i x y -≤,A 发生的次数是满足21i i x y -≤),...,2,1(n i =点的个数k 。
由伯努利定理,p 可以用k /n 近似替代。
这种方法可以推广如下。
对任意区间],[b a 内的连续函数)(x f ,满足d x f c ≤≤)(,(c )0≥d ,为计算定积分⎰ba dx x f )(,先由计算机产生n 个点的坐标),(i i y x ),...,2,1(n i =,其中i i y x ,分别为],[b a 和],[d c 区间上的均匀分布随机数,然后记录n 个点中满足)(i i x f y ≤的数目k ,则c a b nkc d a b dx x f ba)())(()(-+--≈⎰(3)(2)均值估计法这种方法依据概率论的一下两个定理: 大数定理(辛钦定理)]2[ 若随机变量n Y Y Y ,...,,21相互独立,服从同一个分布,且具有数学期望μ=i EY ),...,2,1(n i =,则对任意的正数ε,有11lim 1=⎭⎬⎫⎩⎨⎧<-∑=∞→εμn i i n Y n P (4) 随机变量函数的期望]2[ 若随机变量X 的概率分布密度是))((b x a x p ≤≤,则随机变量的函数)(X f Y =的期望为dx x p x f X f E ba⎰=)()())(( (5)于是,当X 为],[b a 区间均匀分布的随机变量时,)/(1)(a b x p -=)(b x a ≤≤,(5)式给出))(()()(x f E a b dx x f ba-=⎰(6)只要产生],[b a 区间相互独立、均匀分布的随机数i x ),...,2,1(n i =,)(i i x f y =就相互独立。