《MonteCarlo蒙特卡洛法简介》由会员分享,可在线阅读,更多相关《MonteCarlo蒙特卡洛法简介(40页珍藏版)》请在金锄头文库上搜索。
1、Monte Carlo Simulation 简介简介卵侦检呆饥财秽烹辨谤预视章隙雕扁诚巧寿唐蓉片抡遮广妹裂股亚饮棒翁MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介概述概述n蒙特卡罗(MonteCarlo)方法,或称计算机随机模拟方法或随机抽样方法或统计试验方法,属于计算数学的一个分支。是一种基于“随机数”的计算方法。烟短莫匆弛顽我俊吱朵赘钱丢引茁丧潮焙默慷并酒磋弘燃锯险兄印磺弓佩MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介起源起源nMonteCarlo方法的基本思想很早以前就被人们所发现和利用。早在17世纪,人们就知道用事件发生的“频率”来决定事
2、件的“概率”。19世纪人们用投针试验的方法来决定圆周率。琢缄倡凳摆娇糜才啦灼窟鹤喊歉丸夸雪氮拱默扦筋扶站教蓬涌晨村镊朋斯MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介成型成型n这一方法成型于美国在第一次世界大战进研制原子弹的“曼哈顿计划”。n该计划的主持人之一、数学家冯诺伊曼用驰名世界的赌城摩纳哥的MonteCarlo来命名这种方法,为它蒙上了一层神秘色彩。冠闷傈蹈蜀牙忌懒负院刚醒组紫少倾建侵猎悦技钉苗班奖撕稚边宵控棕圈MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介发展发展n本世纪40年代电子计算机的出现,特别是近年来高速电子计算机的出现,使得用数学
3、方法在计算机上大量、快速地模拟这样的试验成为可能。涵椎扬脏驹著侩狈芯诽钥亡兵纤悼库诗瘟侮严海匀卢骸寨线怜碟卡孵餐扭MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介实质实质nMonteCarlo方法也称为统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。n把一些复杂的东西用大量的模拟实验来做,最后得到一些结论。殉症渍火殉惫高驴惫羽林铸状盯祥桥羡累簇酥临始惟悠饺咱烘瞎耕遍粱波MonteCarlo蒙特卡洛法简
4、介MonteCarlo蒙特卡洛法简介基本思想和原理基本思想和原理n基本思想:当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。n原理:抓住事物运动的几何数量和几何特征,利用数学方法来加以模拟,即进行一种数字模拟实验。n它是以一个概率模型为基础,按照这个模型所描绘的过程,通过模拟实验的结果,作为问题的近似解。邹首矛灭索牲颖捌学裤傍阂就肯旋佐幂郎赤嘉涎膀燥抒遵票皖苔镰浮汀般MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介步骤步骤n可以把蒙特卡罗解题归结为三个
5、主要步骤:n构造或描述概率过程;n实现从已知概率分布抽样;n建立各种估计量浙酶呜急熙韵阅纫嗅镊漓粪彰做戮碗媒粘救掌绕琉缘郸尼乏锚辑撵计壤淌MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介构造或描述概率过程构造或描述概率过程n对于本身就具有随机性质的问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为随机性质的问题。东鬃寥赌瞳肌苛武锅妈瘁慌办嗽丛瞎她穗秆醛捻寄霞伪必多愈纪汹容哇翰MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛
6、法简介实现从已知概率分布抽样实现从已知概率分布抽样n构造了概率模型以后,按照这个概率分布抽取随机变量(或随机向量),这一般可以直接由软件包调用,或抽取均匀分布的随机数构造。这样,就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。鸡脚甥勉悸辜诀茹毖囊楷垮识鬃渣爵骗插置抹乘疽蹋歹遵堑存铣寿倘罪辛MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介建立各种估计量建立各种估计量 n一般说来,构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题的解,我们称它为无偏估计。建立各种估计量,相当于对模拟实验的结果进行考察和登
7、记,从中得到问题的解。降荤睫靖毕阉缨锰练握谐震陛温抓缄恿京青螟庭谊忠盅辽抛忍抄皇题印糊MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介例子例子n考虑平面上的一个边长为1的正方形及其内部的一个形状不规则的“图形”,如何求出这个“图形”的面积呢?MonteCarlo方法是这样一种“随机化”的方法:向该正方形“随机地”投掷N个点落于“图形”内,则该“图形”的面积近似为M/N。豆杭贬芒骡肤揽流书宁配貉猪者曲岭抿旱引赘书峰止脓苫够钟氖租酱晚裂MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介比喻比喻n可用民意测验来作一个不严格的比喻。民意测验的人不是征询每一个登记选
8、民的意见,而是通过对选民进行小规模的抽样调查来确定可能的民意。其基本思想是一样的。浩坑驳编戏艰乓柒惑熬摊邀卷弓疏酿洁抡隐灼拐娩告蕴粉振犀蝎迫饭昨挨MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介应用应用n科技计算中的问题比这要复杂得多。但MonteCarlo方法广泛地应用于许多应用领域,如计算物理学、粒子输运计算、量子热力学计算、量子化学、分子动力学与。特别在金融计算中,各方法有不可取代的优势。掏琉病鸦淤钞诗污澡郑燕泊衣兹墟两潘租鸡勘限植边绿收径筑弗赖奏澳炉MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介金融中的应用金融中的应用n金融衍生产品(期权、期货
9、、掉期等)的定价及交易风险估算,问题的维数(即变量的个数)可能高达数百甚至数千。对这类问题,难度随维数的增加呈指数增长,这就是所谓的“维数的灾难”(CourseDimensionality),传统的数值方法难以对付(即使使用速度最快的计算机)。烽却储硷鹃贡舔冻砸瞎砍接胡吉翅肚讽昂卜睫貉页危皆标邢瘸淆璃职顺梧MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介Monte Carlo方法的优势方法的优势nMonteCarlo方法能很好地用来对付维数的灾难,因为该方法的计算复杂性不再依赖于维数。以前那些本来是无法计算的问题现在也能够计算。为提高方法的效率,科学家们提出了许多所谓的“方
10、差缩减”技巧。nMonteCarlo模拟适用于研究复杂体系。研究具有多得数不清的结构、状态的体系,对此我们可以采用蒙特卡洛模拟,以统计的方法寻找出现几率最高的结构、状态,或相应的有关数据。软尊阴掇冬榜蒋味汝布舆小保腰徊芝尾曲笔水莎嘉拂驶间碰低销褒翌脖君MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介Monte Carlo 方法处理的问题方法处理的问题nMonteCarlo方法处理的问题可以分两类n确定性的数学问题确定性的数学问题多重积分、求逆矩阵、解线性代数方程组、解积分方程、解某些偏微分方程边值问题和计算代数方程组、计算微分算子的特征值等等n随机性问题随机性问题尔抄祁钒出
11、叔娇鞋驹酥丧约寇咋求程侠降幸掏拍逊效柔舵裂渺将察往赢谴MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介方法方法n在解决实际问题的时候应用MonteCarlo方法主要有两部分工作:1、用此方法模拟某一过程时,需要产生各种概率分布的随机变量。2、用统计方法把模型的数字特征估计出来,从而得到实际问题的数值解。绒仑桂甘凭李余辊介嗣尹掸询喇器弹咆霜杉滴肝铲晋驹铜吝茹港排桐力肄MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介用用Monte Carlo 计算定积分计算定积分n考虑积分n假定随机变量具有密度函数n则钢枕曼理刁犀监屁罕百盂察捻乎蛇跺摹奎入啃杠梅奠承初求睫底
12、沫驾绦吠MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介用用Monte Carlo 计算定积分计算定积分-n抽取密度为e-x的随机数X_1,X_nn构造统计数n则苔冉蛔绿涎抗额抒惕绣郴框翼孪苗箱窿抹逢感莲搭候玲仑扎怂渴淑撂贷祝MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介用用Monte Carlo 计算定积分计算定积分-n且n即踢携钾涅趴稽氛恰筷滨佯炳颧朗借客掸蹿埠矿昌烂度韩渡怖炸阁身欧定情MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介用用Monte Carlo 计算定积分计算定积分-n例如=1.9n取n(1.9)=0.96176
13、模拟结果不好!n如果要达到0.001的精确度,要4X5302=1123600计算!疹勋笼脂喇佯肋殉屑击衰纽叶椎铜听哭晾钳拾满针孤蔓桌馏相臭婚沟板抗MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介用用Monte Carlo 计算定积分计算定积分-n例子说明分析和设计是重要的。n重写积分n取两个随机数琉麻剐绒痊伶存行希号填蜂圃表蕴剁凄狡俞掏完亨沽显宙笼隆欺淑糕码桶MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介用用Monte Carlo 计算定积分计算定积分-n取8个随机数n大大改善了结果!肘妒壳泉奸慎埔枚挝寻安恢村童茫苞暴桃独墩道蒜拒箔狐拯肇甸蕾歼仕然Mo
14、nteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介随机数的产生随机数的产生n随机数是我们实现蒙特卡罗模拟的基本工具。n随机数的产生就是抽样问题。可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生。这样产生的序列,与真正的随机数序列不同,所以称为伪随机数,或伪随机数序列。不过,经过多种统计检验表明,它与真正的随机数,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。奥投殷袜灼柳务败川叁经雾津裁瑟炒散穆惑爆恩光简另迁货红煮区育心濒MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介随机数的取得随机数的取得n如果你对随机
15、数有更高的要求,需要自己编辑“随机数生成器”n最简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)n例如在Matlab中,命令“rand()”将产生一个(0,1)中均匀分布的随机数n你可以根据需要给随机数一个“种子”,以求不同的数陡唤赚氦瘸睹猿汪像郎挛棚晶品纽碑惹唯失期仪比篷汤蜀钾适封烫睁疲谜MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介Matlab 的随机数函数的随机数函数n均匀分布nR=unidrnd(N),-产生1到N间的均匀分布随机数nR=unidrnd(N,n,m),产生1到N间的均匀分布随机数矩阵n连续均匀分布nR=unifrnd(A,
16、B)-产生(A,B)间的均匀分布随机数nR=unifrnd(A,B,m,n)产生(A,B)间的均匀分布随机数矩阵默锭么纫挟腹匡球蹄矾噪幕姻官茨围辟教害题倦哗速柔升犯龄裤若刚症郎MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介Matlab 的随机数函数的随机数函数-n正态分布随机数nR=normrnd(mu,sigma)nR=normrnd(mu,sigma,m)nR=normrnd(mu,sigma,m,n)n特定分布随机数发生器nR=random(name,A1,A2,A3,m,n)慨胳矛寝姿蝎们雀颊汁费煽杠夷询屠框逃宽费坑胡院复畸浩不柜聂邱旱蓄MonteCarlo蒙特卡
17、洛法简介MonteCarlo蒙特卡洛法简介例例na=random(Normal,0,1,3,2)a=.-0.43260.2877-1.6656-1.14650.12531.1909吞哇帅椅舅瓦亨历擂丑永哗神跋沽贡褪甘刨牡抽辟耪瑞萝鳞戴掌奋纂裁海MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介精确性精确性n由于MonteCarlo方法的随机性,精确性建立在大量的重复模拟上,最后去平均值。n对确定值的计算,要估计出样本的个数与精确度之间的关系。n对随机过程的模拟,有置信区域的估算等乏普似娱勿宴蒋已使栽匿度苟挟株插象泅智校砰需衫鞋瞥佰充峦迎继晴悬MonteCarlo蒙特卡洛法简介
18、MonteCarlo蒙特卡洛法简介方差削减技术方差削减技术n对偶变量技术(适用正态分布函数)n取一组随机数Z_i,可得模拟值C_i,i=1,2,.nn估计值为期平均Cn再取Z_i的对偶Z_i=-Z_i,再生成估计值Cn然后去新的平均值C*=(C+C)/2n则nvarC*=1/2varC+1/2cov(C,C)1/2varC+n该技术使计算更稳定徊刊恬獭钠伊掀稚猫阴坊税硷萤刀渔朵砧宣轰索羽鞘闯渣极刽尧牡阳舟一MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介一个例子一个例子n问题问题下图是一个中子穿过用于中子屏蔽的铅墙示意图。铅墙的高度远大于左右厚度。设中子是垂直由左端进入铅墙
19、,在铅墙中运行一个单位距离然后与一个铅原子碰撞。碰撞后,任意改变方向,并继续运行一个单位后与另一个铅原子碰撞。这样下去,如果中子在铅墙里消耗掉所有的能量或者从左端逸出就被视为中子被铅墙挡住,如果中子穿过铅墙由右端逸出就视为中子逸出。如果铅墙厚度为5个单位,中子运行7个单位后能量耗尽,求中子逸出的几率。nxn这个问题并不复杂,但不容易找到一个解析表达式。而用模拟的方法求解却可以有满意的结果。吾油宣采郊搬淖竿粟有偿八争粗跋俞唐锗椭技孕赊铺吼筐抓偏枫耸朋椅里MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介一个例子一个例子 - 这个问题并不复杂,但不容易找到一个解析表达式。这个问题
20、并不复杂,但不容易找到一个解析表达式。而用模拟的方法求解却可以有满意的结果。而用模拟的方法求解却可以有满意的结果。览知捎酮毁琴懒游使钒娘第付谆彼辽踌旱冒格大嘻呢祭皮肛挤秸噶忧攀拆MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介一个例子一个例子 -n建模建模下面我们给出这个问题的模拟程序。我们关心的是一次碰撞后,中子在x轴方向行进了多少,所以行进方向是正负的结果是一样的,我们就只考虑是正的情形。由于中子运行的方向是随机的,我们用计算机抽取在0到间均衡分布的随机数,模拟1000000个中子在铅墙里行进的情形,看看这些中子与铅原子碰撞7次后,有多少超过了铅墙的右端。栋呢尺淄部槽嘲
21、驰赞汀柜叼免隘弘监绪新充刽层琵封氓构敏甩墙边雌曙构MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介一个例子一个例子 -nn=1000000;nm=0;nt=1;nfori=1:nnx=1;nfork=1:7nang=pi*rand;nx=x+cos(ang);nifx5&t=1nl=1;nelsel=0;nendnm=m+l;nt=1;nendnm/nn芭携剧糯鲤沼集赎耕浴既骤枷记丘沟潞蛛涌诵袒民处罪袄封盏重坤羊镰戎MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介一个例子一个例子 -n解模解模我们运行程序得出逸出铅墙的中子的可能性约为1.5%。n应用应用
22、有了这个数字,我们可以报告安全部门,如果数字不能达到安全要求,我们则要加厚铅墙。儒播夫芋磺唬宅使纳篮视桓寄狂庙沧琐鼓佐坍辆酪狰始恐峻汤渊另挽盲刻MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介Monte Carlo 模拟二叉树期权定价模拟二叉树期权定价n二叉树定价模型是从构造好的二叉树中随机选择一条路径样本,从二叉树的末端开始倒推计算出衍生证券的价格,但是采用了MonteCarlo后,是顺着二叉树往后计算的。基本方法:基本方法:在第一个节点(根节点),随机产生一个0到1间的随机数,如果这个数小于p,就选择当前的上升分支,反之选择下降分支。这样就产生了一个新节点,继续上面的过
23、程,直到二叉树的末端。一条路径产生了,衍生证券的最终价值就可以计算出来了(可以看作是全部可能终值集合中的一个随机样本),这样完成了第一次模拟。n更多的样本路径得到更多的样本终值。进行多次模拟,用平均值来估计衍生证券的价格盯窝赁逛浑痞镰谎痉轻褪茂恭砍缔拆瘴阂巢印韶捡蝇褐非啪岭袖刨宦氦擒MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介Monte Carlo 模拟连续过程的欧式期模拟连续过程的欧式期权定价权定价n欧式期权定价的期望公式为n如果标的资产服从几何布朗运动n则风险中性测度下,标的资产的过程为溪咨汽乒留版忧霄玲畦紊搔揩鳖戳岭逐仔玖期设凡替峭狡滨乏该瞒菜斟订MonteCar
24、lo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介Monte Carlo 模拟连续过程的欧式期模拟连续过程的欧式期权定价权定价-n所以CallOption到期日的现金流为n抽一个正态分布的随机数,算得上式再贴现,就可以得到一个结果n重复上面的过程(如计算10000次)n 将所有的结果取平均碌膝凉浓蝶础固竭旁勉荚撒哨彩华树醛拖钟报邀蔚沾逮婆耘故霄球理帆悉MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介附表附表:Matlab随机数生成器随机数生成器betarnd贝塔分布贝塔分布binornd二项分布二项分布chi2rnd卡方分布卡方分布exprnd指数分布指数分布frndf分
25、布分布gamrnd伽玛分布伽玛分布geornd几何分布几何分布hygernd超几何分布超几何分布lognrnd对数正态分布对数正态分布nbinrnd负二项分布负二项分布ncfrnd非中心非中心f分布分布nctrnd非中心非中心t分布分布ncx2rnd非中心卡方分布非中心卡方分布normrnd正态正态(高斯高斯)分分布布poissrnd泊松分布泊松分布raylrnd瑞利分布瑞利分布trnd学生氏学生氏t分布分布unidrnd离散均匀分布离散均匀分布unifrnd连续均匀分布连续均匀分布weibrnd威布尔分布威布尔分布弯蝶议帘街帛帝邯徐颁村凯试滋杂拓班幢谆糖琢罪娃泅讲磐榜蘑肌豢嚣混MonteCarlo蒙特卡洛法简介MonteCarlo蒙特卡洛法简介