蒙特卡洛模拟法

合集下载

蒙特卡洛模型方法

蒙特卡洛模型方法
蒙特卡罗模型是利用计算机进行数值计算的一类特殊风格的方法,它是把某一现实或抽象系统的某种特征或部分状态,用模拟模型的系统来代替或模仿,使所求问题的解正好是模拟模型的参数或特征量,再通过统计实验,求出模型参数或特征量的估计值,得出所求问题的近似解。目前评价不确定和风险项目多用敏感性分析和概率分析,但计算上较为复杂,尤其各因素变化可能出现概率的确定比较困难。蒙特卡罗模型解决了这方面的问题,各种因素出现的概率全部由软件自动给出,通过多次模拟,得出项目是否应该投资。该方法应用面广,适应性强。
二、理论和方法
蒙特卡洛模拟早在四十年前就用于求解核物理方面的问题。当管理问题更为复杂时,传统的数学方法就难以进行了。模拟是将一个真实事物模型化,然后对该模型做各种实验,模拟也是一个通过实验和纠正误差来寻求最佳选择的数值性求解的过程。模拟作为一种有效的数值处理方法,计算量大。以前只是停留在理论探讨上,手工是无法完成的。在管理领域由于规律复杂随机因素多,很多问题难以用线性数学公式分析和解决,用模拟则有效得多。在新式的计算机普及后,用模拟技术来求解管理问题已成为可能。
从表中数据可以看到,一直到公元20世纪初期,尽管实验次数数以千计,利用蒙特卡罗方法所得到的圆周率∏值,还是达不到公元5世纪祖冲之的推算精度。这可能是传统蒙特卡罗方法长期得不到推广的主要原因。
计算机技术的发展,使得蒙特卡罗方法在最近10年得到快速的普及。现代的蒙特卡罗方法,已经不必亲自动手做实验,而是借助计算机的高速运转能力,使得原本费时费力的实验过程,变成了快速和轻而易举的事情。它不但用于解决许多复杂的科学方面的问题,也被项目管理人员经常使用。
设有统计独立的随机变量Xi(i=1,2,3,…,k),其对应的概率密度函数分别为fx1,fx2,…,fxk,功能函数式为Z=g(x1,x2,…,xk)。

随机模拟

随机模拟

随机模拟(蒙特卡罗算法)一 随机模拟法随机模拟法也叫蒙特卡罗法,它是用计算机模拟随机现象,通过大量仿真试验,进行分析推断,特别是对于一些复杂的随机变量,不能从数学上得到它的概率分布,而通过简单的随机模拟就可以得到近似的解答。

M onte Carlo 法也用于求解一些非随机问题,如重积分、非线性方程组求解、最优化问题等。

需要指出的是,Monte Carlo 计算量大,精度也不高,因而主要用于求那些解析方法或常规数学方法难解问题的低精度解,或用于对其他算法的验证。

蒙特卡罗方法的基本思想是:当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。

在解决实际问题的时候应用蒙特·卡罗方法主要有两部分工作: 用蒙特卡罗方法模拟某一过程时,需要产生各种概率分布的随机变量。

用统计方法把模型的数字特征估计出来,从而得到实际问题的数值解。

使用蒙特卡罗方法进行分子模拟计算是按照以下步骤进行的:使用随机数发生器产生一个随机的分子构型。

对此分子构型的其中粒子坐标做无规则的改变,产生一个新的分子构型。

计算新的分子构型的能量。

比较新的分子构型于改变前的分子构型的能量变化,判断是否接受该构型。

若新的分子构型能量低于原分子构型的能量,则接受新的构型。

若新的分子构型能量高于原分子构型的能量,则计算玻尔茲曼常数,同时产生一个随机数。

若这个随机数大于所计算出的玻尔兹曼因子,则放弃这个构型,重新计算。

若这个随机数小于所计算出的玻尔兹曼因子,则接受这个构型,使用这个构型重复再做下一次迭代。

如此进行迭代计算,直至最后搜索出低于所给能量条件的分子构型结束。

二 随机模拟法应用实例考虑二重积分(,)AI f x y dxdy =⎰⎰,其中(,)0,(,)f x y x y A ≥∀∈根据几何意义,它是以(,)f x y 为曲面顶点,A 为底的柱体C 的体积。

蒙特卡洛(Monte Carlo)模拟法

蒙特卡洛(Monte Carlo)模拟法

当科学家们使用计算机来试图预测复杂的趋势和事件时, 他们通常应用一类需要长串的随机数的复杂计算。

设计这种用来预测复杂趋势和事件的数字模型越来越依赖于一种称为蒙特卡罗模似的统计手段, 而这种模拟进一步又要取决于可靠的无穷尽的随机数目来源。

蒙特卡罗模拟因摩纳哥著名的赌场而得名。

它能够帮助人们从数学上表述物理、化学、工程、经济学以及环境动力学中一些非常复杂的相互作用。

数学家们称这种表述为“模式”, 而当一种模式足够精确时, 他能产生与实际操作中对同一条件相同的反应。

但蒙特卡罗模拟有一个危险的缺陷: 如果必须输入一个模式中的随机数并不像设想的那样是随机数, 而却构成一些微妙的非随机模式, 那么整个的模拟(及其预测结果)都可能是错的。

最近, 由美国佐治亚大学的费伦博格博士作出的一分报告证明了最普遍用以产生随机数串的计算机程序中有5个在用于一个简单的模拟磁性晶体中原子行为的数学模型时出现错误。

科学家们发现, 出现这些错误的根源在于这5个程序产生的数串其实并不随机, 它们实际上隐藏了一些相互关系和样式, 这一点只是在这种微小的非随机性歪曲了晶体模型的已知特性时才表露出来。

贝尔实验室的里德博士告诫人们记住伟大的诺伊曼的忠告:“任何人如果相信计算机能够产生出真正的随机的数序组都是疯子。

”蒙特卡罗方法(MC)蒙特卡罗(Monte Carlo)方法:蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计试验方法,属于计算数学的一个分支,它是在本世纪四十年代中期为了适应当时原子能事业的发展而发展起来的。

传统的经验方法由于不能逼近真实的物理过程,很难得到满意的结果,而蒙特卡罗方法由于能够真实地模拟实际物理过程,故解决问题与实际非常符合,可以得到很圆满的结果。

这也是我们采用该方法的原因。

蒙特卡罗方法的基本原理及思想如下:当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。

蒙特卡洛方法

蒙特卡洛方法

蒙特卡洛方法1、蒙特卡洛方法的由来蒙特卡罗分析法(Monte Carlo method),又称为统计模拟法,是一种采用随机抽样(Random Sampling)统计来估算结果的计算方法。

由于计算结果的精确度很大程度上取决于抽取样本的数量,一般需要大量的样本数据,因此在没有计算机的时代并没有受到重视。

第二次世界大战时期,美国曼哈顿原子弹计划的主要科学家之一,匈牙利美藉数学家约翰·冯·诺伊曼(现代电子计算机创始人之一)在研究物质裂变时中子扩散的实验中采用了随机抽样统计的手法,因为当时随机数的想法来自掷色子及轮盘等赌博用具,因此他采用摩洛哥著名赌城蒙特卡罗来命名这种计算方法,为这种算法增加了一层神秘色彩。

蒙特卡罗方法提出的初衷是用于物理数值模拟问题, 后来随着计算机的快速发展, 这一方法很快在函数值极小化、计算几何、组合计数等方面得到应用, 于是它作为一种独立的方法被提出来, 并发展成为一门新兴的计算科学, 属于计算数学的一个分支。

如今MC 方法已是求解科学、工程和科学技术领域大量应用问题的常用数值方法。

2、蒙特卡洛方法的核心—随机数蒙特卡洛方法的基本理论就是通过对大量的随机数样本进行统计分析,从而得到我们所需要的变量。

因此蒙特卡洛方法的核心就是随机数,只有样本中的随机数具有随机性,所得到的变量值才具有可信性和科学性。

在连续型随机变量的分布中, 最基本的分布是[0, 1]区间上的均匀分布, 也称单位均匀分布。

由该分布抽取的简单子样ξ1,ξ2ξ3 ……称为随机数序列, 其中每一个体称为随机数, 有时称为标准随机数或真随机数, 独立性和均匀性是其必备的两个特点。

真随机数是数学上的抽象, 真随机数序列是不可预计的, 因而也不可能重复产生两个相同的真随机数序列。

真随机数只能用某些随机物理过程来产生, 如放射性衰变、电子设备的热噪音、宇宙射线的触发时间等。

实际使用的随机数通常都是采用某些数学公式产生的,称为伪随机数。

蒙特卡洛方法

蒙特卡洛方法

蒙特卡洛方法整理介绍
通常蒙特卡罗方法通过构造符合一定规则的随机数来解决数学上的各种问题。

对于那些由于计算过于复杂而难以得到解析解或者根本没有解析解的问题,蒙特卡罗方法是一种有效的求出数值解的方法。

一般蒙特卡罗方法在数学中最常见的应用就是蒙特卡罗积分。

积分[编辑]
非权重蒙特卡罗积分,也称确定性抽样,是对被积函数变量区间进行随机均匀抽样,然后对被抽样点的函数值求平均,从而可以得到函数积分的近似值。

此种方法的正确性是基于概率论的中心极限定理。

当抽样点数为m时,使用此种方法所
得近似解的统计误差只与m有关(与正相关),不随积分维数的改变而改变。

因此当积分维度较高时,蒙特卡罗方法相对于其他数值解法更优。

圆周率[编辑]
蒙特卡洛方法可用于近似计算圆周率:让计算机每次随机生成两个0到1之间的数,看以这两个实数为横纵坐标的点是否在单位圆内。

生成一系列随机点,统计单位圆内的点数与总点数,(圆面积和正方形面积之比为PI:4,PI为圆周率),当随机点取得越多时,其结果越接近于圆周率(然而准确度仍有争议:即使取10的9次方个随机点时,其结果也仅在前4位与圆周率吻合)。

用蒙特卡洛方法近似计算圆周率的先天不足是:第一,计算机产生的随机数是受到存储格式的限制的,是离散的,并不能产生连续的任意实数;上述做法将平面分割成一个个网格,在空间也不是连续的,由此计算出来的面积当然与圆或多或少有差距。

蒙特卡罗算法

蒙特卡罗算法

蒙特卡洛算法算法简介:蒙特·卡罗方法(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所占比例*矩形面积。

清华大学电力系统不确定性分析-----05蒙特卡罗模拟法_108801540

清华大学电力系统不确定性分析-----05蒙特卡罗模拟法_108801540
20
例题——利用变换方法生成标准 正态分布的随机变量
设对随机数 U1,U2 做下列变换:
N1 2 ln U 1 cos 2U 2 N 2 2 ln U 1 sin 2U 2
证明 N1, N2 为相互独立的服从 N(0, 1)分布的随机变量。
u1 1 2 n1 exp n12 n2 n1 2 u2 1 n 2 2 2 n1 2 n1 n2

舍选抽样方法
根据满足一定的检验条件进行舍选,以得到所需随机 变量的抽样值
设随机变量 η的密度函数 f x 可以表示 为 f x L

h x

g x, y dy
产生随机数(x,y)
其中 g x, y 是随机变量 X , Y 的联合密 度函数, h x 在 Y 的定义域上取常值,L 为一常量。则随机变量η的抽样过程为:
9
蒙特卡洛法的一般性原理
确定性问题
y
1
在正方形 0 x 1 , 0 y 1 中随机地均匀地 投掷一点(ξ,η),试求该点落在曲线 y f ( x) 下的
y=f(x)
概率 p。用 S 表示曲线 y f ( x) 下的区域;设ξ和η
S
相互独立,在[0,1]上满足均匀分布。于是有
dx 1
成立,其中α为置信度,1-α为置信水平。于是,可以根据问题的要求确定出 置信水平,按照正态分布表确定 cα,从而得到估计 GN 与真值 G 之间的误差
GN G
15
c N
蒙特卡洛模拟法计算指标的收敛过程示例
失稳概率 0.06 0.05 0.04 0.03 0.02 0.01 0 0
求出π值

蒙特卡罗(Monte Carlo)方法简介

蒙特卡罗(Monte Carlo)方法简介

蒙特卡罗(Monte Carlo)方法简介蒙特卡罗(Monte Carlo)方法简介蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法。

一起源这一方法源于美国在第二次世界大战进研制原子弹的"曼哈顿计划"。

Monte Carlo方法创始人主要是这四位:Stanislaw Marcin Ulam, Enrico Fermi, John von Neumann(学计算机的肯定都认识这个牛人吧)和Nicholas Metropolis。

Stanislaw Marcin Ulam是波兰裔美籍数学家,早年是研究拓扑的,后因参与曼哈顿工程,兴趣遂转向应用数学,他首先提出用Monte Carlo方法解决计算数学中的一些问题,然后又将其应用到解决链式反应的理论中去,可以说是MC方法的奠基人;Enrico Fermi是个物理大牛,理论和实验同时都是大牛,这在物理界很少见,在“物理大牛的八卦”那篇文章里提到这个人很多次,对于这么牛的人只能是英年早逝了(别说我嘴损啊,上帝都嫉妒!);John von Neumann可以说是计算机界的牛顿吧,太牛了,结果和Fermi一样,被上帝嫉妒了;Nicholas Metropolis,希腊裔美籍数学家,物理学家,计算机科学家,这个人对Monte Carlo方法做的贡献相当大,正式由于他提出的一种什么算法(名字忘了),才使得Monte Carlo方法能够得到如此广泛的应用,这人现在还活着,与前几位牛人不同,Metropolis很专一,他一生主要的贡献就是Monte Carlo方法。

蒙特卡罗方法的名字来源于摩纳哥的一个城市蒙地卡罗,该城市以赌博业闻名,而蒙特•罗方法正是以概率为基础的方法。

与它对应的是确定性算法。

二解决问题的基本思路Monte Carlo方法的基本思想很早以前就被人们所发现和利用。

早在17世纪,人们就知道用事件发生的"频率"来决定事件的"概率"。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

蒙特卡洛模拟法
蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数估计量和统计量,进而研究其分布特征的方法。

具体的,当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用时,可用随机模拟法近似计算出系统可靠性的预计值;随着模拟次数的增多,其预计精度也逐渐增高。

由于涉及到时间序列的反复生成,蒙特卡洛模拟法是以高容量和高速度的计算机为前提条件的,因此只是在近些年才得到广泛推广。

这个术语是二战时期美国物理学家Metropolis执行曼哈顿计划的过程中提出来的。

蒙特卡洛模拟方法的原理是当问题或对象本身具有概率特征时,可以用计算机模拟的方法产生抽样结果,根据抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论。

蒙特卡洛模拟法的应用领域
蒙特卡洛模拟法的应用领域主要有:
1.直接应用蒙特卡洛模拟:应用大规模的随机数列来模拟复杂系统,得到某些参数或重要指标。

2.蒙特卡洛积分:利用随机数列计算积分,维数越高,积分效率越高。

3.MCMC:这是直接应用蒙特卡洛模拟方法的推广,该方法中随机数的产生是采用的马尔科夫链形式。

(也叫随机模拟法)当系统中各个单元的可靠性特征量已知,但系统的可靠性过于复杂,难以建立可靠性预计的精确数学模型或模型太复杂而不便应用则可用随机模拟法近似计算出系统可靠性的预计值。

随着模拟次数的增多,其预计精度也逐渐增高。

由于需要大量反复的计算,一般均用计算机来完成。

应用此方法求解工程技术问题可以分为两类:确定性问题和随机性问题。

解题步骤如下:
1.根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致
2 .根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。

通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。

3. 根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等)。

4.按照所建立的模型进行仿真试验、计算,求出问题的随机解。

5. 统计分析模拟试验结果,给出问题的概率解以及解的精度估计。

在可靠性分析和设计中,用蒙特卡洛模拟法可以确定复杂随机变量的概率分布和数字特征,可以通过随机模拟估算系统和零件的可靠度,也可以模拟随机过程、寻求系统最优参数等。

蒙特卡洛模拟法的实例
资产组合模拟:
假设有五种资产,其日收益率(%)分别为
0.02460.0189 0.0273 0.0141 0.0311
标准差分别为
0.95091.4259, 1.5227, 1.1062, 1.0877
相关系数矩阵为
1.0000 0.4403 0.4735 0.4334 0.6855
0.4403 1.00000.7597 0.7809 0.4343
0.4735 0.75971.0000 0.6978 0.4926
0.4334 0.78090.6978 1.0000 0.4289
0.6855 0.43430.4926 0.4289 1.0000
假设初始价格都为100,模拟天数为504天,模拟线程为2,程序如下%run.m
ExpReturn = [0.0246 0.0189 0.0273 0.0141 0.0311]/100; %期望收益
Sigmas = [0.9509 1.4259, 1.5227, 1.1062, 1.0877]/100;%标准差Correlations = [1.0000 0.4403 0.4735 0.4334 0.6855
0.4403 1.00000.7597 0.7809 0.4343
0.4735 0.75971.0000 0.6978 0.4926
0.4334 0.78090.6978 1.0000 0.4289
0.6855 0.43430.4926 0.4289 1.0000
];%相关系数
ExpCov = corr2cov(Sigmas, Correlations);%协方差
StartPrice = 100;%初始价格
NumObs = 504;
NumSim = 2;
RetIntervals = 1;
NumAssets = 5;
%开始模拟
randn('state', 0);
RetExact = portsim(ExpReturn, ExpCov, NumObs, RetIntervals, NumSim);
Weights = ones(NumAssets, 1)/NumAssets;
PortRetExact = zeros(NumObs, NumSim);
for i = 1:NumSim
PortRetExact(:, i) = RetExact(:,:,i)*Weights;
end
PortExact = ret2tick(PortRetExact,repmat(StartPrice, 1, NumSim));
plot(PortExact, '-r');。

相关文档
最新文档