蒙特卡洛方法与定积分计算
- 格式:doc
- 大小:88.00 KB
- 文档页数:4
蒙特卡罗方法计算定积分作者:黄婧涵来源:《科学家》2017年第07期摘要数学领域中,定积分计算问题应用广泛,经典的定积分数学定义方法可直接用于求解定积分,但是,对于函数解析式未知的情况下,传统的数学定义方法无法进行定积分计算,而蒙特卡罗方法对函数解析式不进行限制,其以概率方法进行近似计算从而逐渐逼近定积分理论值。
本文针对函数解析式已知与未知的两种情况,分别以定积分数学定义方法和蒙特卡罗方法进行定积分计算,并从算法收敛速度以及计算结果精确度两方面对算法进行评测。
实验结果表明,定积分数学定义法收敛速度快,计算精度高,但是普适性低,对于函数解析式未知情况下无法进行计算;而蒙特卡罗方法尽管收敛速度较慢,但是普适性极高,且函数解析式未知情况下,效果更优。
关键词微积分;定积分;蒙特卡罗方法;收敛速度中图分类号 O1 文献标识码 A 文章编号 2095-6363(2017)07-0003-021 概述微积分[ 1 ]是数学领域的一个基础学科,是高等数学中研究函数微分、积分以及有关概念与应用的数学分支,其研究范畴包含3个方面:微分、积分以及微分与积分两者之间的关系。
若()f x是[a,b]上的连续函数,并且有’()()F xf x=,则()()()baf x dxF bF a∫=?。
也就是说,一个定积分的值就是原函数积分上限的值与原函数在积分下限的值的差值,即牛顿-莱布尼兹公式计算定积分。
其表明对于图形无限细分再累加成为可能,并可将其转化为对积分的计算,揭示了积分与微分本质的关系,因此牛顿-莱布尼兹公式又称微积分基本定理。
然而计算定积分[ 2 ]的数学定义方法以及牛顿-莱布尼兹公式方法都仅限于函数()f x解析式已知的情况,对于()f x未知解析式的情况下,无法进行定积分求解。
蒙特卡罗(Monte-Carlo)[3]方法是20世纪40年代中期由于科学技术的发展和电子计算机的发明,被提出的一种以概率理论[4]为指导的一类极其重要的数值计算方法,是以随机抽样为主要手段,使用随机数(或伪随机数)解决数值计算问题的方法,又称统计模拟方法。
基于蒙特卡罗算法计算圆周率和定积分数摘要:文章描述了如何用蒙特卡罗算法计算圆周率π和不规则函数定积分的值,蒙特·卡罗方法,也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。
是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。
关键词:蒙特卡罗算法;随机;圆周率,积分;•The monte Carlo method is used to calculate the value of PI and definite integralYE Chuhan Guan Mengyu Luo Yudong(Software College, Shenyang Normal University, Shenyang 110034,China)Abstract: Article describes how to use a monte carlo algorithm calculating the value of PI and irregular function of definite integral, monte carlo method, also known as statistical simulation method, in the mid - 1940 due to the development of science and technology and the invention of the computer, and proposed a kind of probability and statistics theory as the guidance of a class of important numerical method.Random Numbers (or, more commonly, pseudorandom Numbers) are used to solve many computational problems.Keywords: Monte Carlo method; Pi; random; Definite integral;引言综述目前研究现状,人们很早就发现了圆周率,中国古代数学家刘徽在三国时期,就利用割圆术计算了圆周率小数点后3位。
文章标题:探索matlab中的蒙特卡洛法求定积分在数学和计算科学中,求解定积分是一个常见的问题。
传统的数值积分方法中,蒙特卡洛法是一种非常有趣和强大的方法,能够对一些特殊的不易求解的定积分问题提供解决方案。
而在matlab这一强大的数学计算软件中,蒙特卡洛法同样有着广泛的应用。
1. 什么是蒙特卡洛法?蒙特卡洛法是一种基于随机采样的数值积分方法,其核心思想是利用随机抽样的方法逼近定积分的值。
具体来说,对于给定的函数$f(x)$以及区间$[a, b]$,蒙特卡洛法通过对函数在该区间上进行随机采样,并利用采样点的平均值来逼近定积分的值。
2. 在matlab中应用蒙特卡洛法在matlab中,可以利用蒙特卡洛法求解定积分问题。
通过生成服从均匀分布的随机数,并代入原函数,然后求解采样点的平均值,可以得到定积分的近似值。
matlab内置了丰富的数学计算和随机数生成函数,能够方便地实现蒙特卡洛法的计算。
3. 实例分析:使用matlab进行蒙特卡洛法求解定积分假设我们要求解函数$f(x)=x^2$在区间$[0, 1]$上的定积分,即$$\int_{0}^{1} x^2 \, dx$$我们可以在matlab中编写如下代码:```matlabN = 1000000; % 设定采样点的个数X = rand(1, N); % 生成均匀分布的随机数Y = X.^2; % 代入原函数integral_value = mean(Y); % 求解采样点的平均值```通过上述代码,我们得到了定积分的近似值integral_value。
在这个例子中,我们利用蒙特卡洛法求得了定积分的近似值。
4. 总结与展望通过本文的介绍,我们对matlab中蒙特卡洛法求解定积分的方法有了初步的了解。
蒙特卡洛法作为一种基于随机采样的数值积分方法,在matlab中有着广泛的应用。
在实际应用中,我们可以根据定积分的具体问题来灵活选择采样点的个数,并结合matlab强大的数学计算能力,在求解定积分问题中取得更加准确的结果。
python编程通过蒙特卡洛法计算定积分详解想当初,考研的时候要是知道有这么个好东西,计算定积分。
开玩笑,那时候计算定积分根本没有这么简单的。
但这确实给我打开了⼀种思路,⽤编程语⾔去解决更多更复杂的数学问题。
下⾯进⼊正题。
如上图所⽰,计算区间[a b]上f(x)的积分即求曲线与X轴围成红⾊区域的⾯积。
下⾯使⽤蒙特卡洛法计算区间[2 3]上的定积分:∫(x2+4*x*sin(x))dx# -*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as pltdef f(x):return x**2 + 4*x*np.sin(x)def intf(x):return x**3/3.0+4.0*np.sin(x) - 4.0*x*np.cos(x)a = 2;b = 3;# use N drawsN= 10000X = np.random.uniform(low=a, high=b, size=N) # N values uniformly drawn from a to bY =f(X) # CALCULATE THE f(x)# 蒙特卡洛法计算定积分:⾯积=宽度*平均⾼度Imc= (b-a) * np.sum(Y)/ N;exactval=intf(b)-intf(a)print "Monte Carlo estimation=",Imc, "Exact number=", intf(b)-intf(a)# --How does the accuracy depends on the number of points(samples)? Lets try the same 1-D integral# The Monte Carlo methods yield approximate answers whose accuracy depends on the number of draws.Imc=np.zeros(1000)Na = np.linspace(0,1000,1000)exactval= intf(b)-intf(a)for N in np.arange(0,1000):X = np.random.uniform(low=a, high=b, size=N) # N values uniformly drawn from a to bY =f(X) # CALCULATE THE f(x)Imc[N]= (b-a) * np.sum(Y)/ N;plt.plot(Na[10:],np.sqrt((Imc[10:]-exactval)**2), alpha=0.7)plt.plot(Na[10:], 1/np.sqrt(Na[10:]), 'r')plt.xlabel("N")plt.ylabel("sqrt((Imc-ExactValue)$^2$)")plt.show()>>>Monte Carlo estimation= 11.8181144118 Exact number= 11.8113589251从上图可以看出,随着采样点数的增加,计算误差逐渐减⼩。
蒙特卡洛计算方法及其在定积分求解中的应用下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!Certainly! Here's a structured demonstration article on the topic "Monte Carlo Calculation Method and Its Application in Definite Integral Computation":蒙特卡洛计算方法及其在定积分求解中的应用。
蒙特·卡罗(Monte Carlo)法是一种统计模拟方法,通常是利用随机数来解决一些数值计算问题,本文要讲的就是利用蒙特·卡罗方法来求解数值积分。
基本思路首先我们知道定积分其实就是一个面积,将其设为I,现在我们就是要求出这个I。
我们的想法是通过在包含定积分的面积为S的区域(通常为矩形)内随机产生一些随机数,其数量为N,再统计在积分区域内的随机数,其数量为i,则产生的随机数在积分区域内的概率为iN,这与积分区域与总区域面积的比值IS应该是近似相等的,我们利用的就是这个关系,即IS≈iN最后即得所求定积分算式为:I=iNS代码部分有了上面的铺垫,我们就可以来写MATLAB代码了。
我们要求的定积分为∫0πsinxdx.对于上述积分我们很容易可以得到其解析解为2,下面我们来看用蒙特·卡罗方法得到的结果,输入代码% Monte Carlo% 蒙特卡洛法求定积分clearN = 1e4;x_min = 0; x_max = pi;f = @(x) sin(x);xx =x_min:0.01:x_max;x = x_min + (x_max-x_min)*rand(N,1);y_min = min(f(xx)); y_max = max(f(xx));y = y_min +(y_max-y_min)*rand(N,1);i = y < f(x);I = sum(i)/N*(x_max-x_min)*(y_max-y_min);% 画图plot(x,y,'go',x(i),y(i),'bo')axis([x_min x_max y_min y_max])hold onplot(xx,f(xx),'r-','LineWidth',2)。
蒙特卡洛方法与定积分计算蒙特卡洛方法和定积分都是数学中常用的计算方法。
蒙特卡洛方法是一种基于随机数的统计计算方法,用于估计数值问题的解。
定积分则是一种通过将函数与自变量相乘并对其积分来计算曲线下的面积的方法。
本文将分别介绍蒙特卡洛方法和定积分的原理和应用,并比较两者的优劣。
蒙特卡洛方法是以蒙特卡洛赌场(Monte Carlo Casino)命名的一种计算方法,最早由美国科学家冯·诺依曼(John von Neumann)于20世纪40年代提出。
蒙特卡洛方法的基本思想是通过随机抽样和统计分析来估计数值问题的解。
具体而言,蒙特卡洛方法随机选择输入数据,并运行多次模拟来获取输出结果的分布情况。
通过对这些输出结果的统计分析,可以得到数值问题的解或近似解。
蒙特卡洛方法在很多领域都有广泛的应用。
其中最著名的应用之一是估计圆周率π的值。
通过在单位正方形内随机投点,并统计落在单位圆内的点的个数,可以得到一个π/4的近似值。
这是因为单位圆的面积为π,而单位正方形的面积为1,所以圆内点的比例即为π/4、通过增加抽样次数,可以得到更精确的π的近似值。
此外,蒙特卡洛方法还可以应用于金融建模、风险评估、物理模拟等领域。
定积分是微积分的一项基础概念,用于计算曲线下的面积。
定积分的计算公式为∫f(x)dx,其中f(x)表示被积函数,dx表示一个无限小的自变量增量。
定积分的计算过程可以看作是将函数与自变量相乘,并对其积分。
曲线下的面积即为定积分的值。
定积分可以通过几何方法、代数方法或数值计算方法等多种方式进行计算。
定积分在数学和物理学中有广泛的应用。
例如,通过计算函数曲线下的面积,可以得到函数的平均值、变化趋势、极值点等信息。
此外,定积分还可以用于求解一些平面图形或空间图形的面积、体积等几何问题。
在物理学中,定积分可以用于计算质点的位移、速度、加速度等运动参数,以及作用力、功等动力学参数。
比较蒙特卡洛方法和定积分,它们各自具有一些优势和劣势。
利用蒙特卡罗方法求定积分的基本方法和原理:
计算f(x)在区域V1中的积分ill:fi:?< dx
原理:设x是在V1中均匀分布的随机变量,^UjlL-裁:ck=E(f(x) | m E ) *V1
证明:由于x是在V1中均匀分布的随机变量,因此其分布密度函数是
p(x)=〔7i 5 "
0 otherwise
因此E(f(x) 1 % E V!乒匹一C dw =匹一_ ci"二,
因而
j[L*Mdw=E(f(x) | 卷任)*V1
注意:x必须是在V1中均匀分布的随机变量。
利用以上原理计算定积分的算法:
在V中选取N个均匀分布的点x,记为x(1), x(2), •…x(N)
设区域V的体积是V
N1=0;% N1表示落在V1中的点数
V1=0;% V1表示区域V1的体积
Sum_f=0; %对V1中的x,求f(x)的和
For i=1:N
If X(i)在V1 中,
N1=N1+1;
Sum_f=Sum_f+f(X(i));
End
End
V1=N1/N*V %因为按上述过程,x落在V1中的概率%N1/N Mean_f=Sum_f/N1;
f(x)在V1 中的积分必Mean_f*V1= Sum_f/N*V。
蒙特卡洛方法与定积分计算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模拟次数时,令,其余不变。
定积分的精确值和模拟值如下:表10.3413447 0.342 0.344 0.34187 0.341539 0.341302注:精确值用integrate(f,0,1)求得扩展如果你很细心,你会发现这个方法目前只适用于积分区间,且积分函数在区间上的取值也位于内的情况。
那么,对于一般区间上的定积分呢?一个很明显的思路,如果我们可以将与建立代数关系就可以了。
首先,做线性变换,令,此时,,。
⼀⽂详解蒙特卡洛(MonteCarlo)法及其应⽤概述蒙特卡罗⽅法是⼀种计算⽅法。
原理是通过⼤量随机样本,去了解⼀个系统,进⽽得到所要计算的值。
它⾮常强⼤和灵活,⼜相当简单易懂,很容易实现。
对于许多问题来说,它往往是最简单的计算⽅法,有时甚⾄是唯⼀可⾏的⽅法。
它诞⽣于上个世纪40年代美国的"曼哈顿计划",名字来源于赌城蒙特卡罗,象征概率。
π的计算第⼀个例⼦是,如何⽤蒙特卡罗⽅法计算圆周率π。
正⽅形内部有⼀个相切的圆,它们的⾯积之⽐是π/4。
现在,在这个正⽅形内部,随机产⽣10000个点(即10000个坐标对 (x, y)),计算它们与中⼼点的距离,从⽽判断是否落在圆的内部。
如果这些点均匀分布,那么圆内的点应该占到所有点的π/4,因此将这个⽐值乘以4,就是π的值。
通过R语⾔脚本随机模拟30000个点,π的估算值与真实值相差0.07%。
⽆意识统计学家法则(Law of the unconscious statistician)这是本⽂后续会⽤到的⼀个定理。
作为⼀个预备知识,我们⾸先来介绍⼀下它。
先来看⼀下维基百科上给出的解释。
In probability theory and statistics, the law of the unconscious statistician (sometimes abbreviated LOTUS) is a theorem used to calculate the 期望值 of a function of a 随机变量 when one knows the probability distribution of but one does not explicitly know the distribution of . The form of the law can depend on the form in which one states the probability distribution of the 随机变量 .If it is a discrete distribution and one knows its PMF function (but not ), then the 期望值 of iswhere the sum is over all possible values of .If it is a continuous distribution and one knows its PDF function (but not ), then the 期望值 of isLOTUS到底表达了⼀件什么事呢?它的意思是:已知随机变量的概率分布,但不知道的分布,此时⽤LOTUS公式能计算出函数的数学期望。
蒙特卡罗方法计算定积分蒙特卡罗方法(Monte Carlo Method)是一种通过运用随机数抽样,利用计算机模拟实验来求解复杂问题的方法。
主要是利用概率统计中大数定律来求解,它可以帮助我们在数学上求解积分,快速准确的进行估计,被用在金融学,计算物理学,经济学,数学统计,技术分析等诸多领域。
一、蒙特卡罗方法计算定积分1、估计问题定义:计算一个未知函数积分。
2、随机抽样:由蒙特卡罗定理,我们在总体样本里进行随机抽样,随机抽取的样本可用与能够准确估计积分的概率多样性。
首先,创建一个具有期望值的随机变量,即函数中的随机变量,有且只有一个。
3、抽样的选择:抽样的选择非常重要,随机抽样的样本数量要远大于正常的定积分计算过程中要求的样本数量。
4、统计估计:通过蒙特卡罗方法,估计积分就是所抽样本的函数值的平均值乘以定积分范围。
二、蒙特卡罗方法容易出现的问题1、抽样样本量不够:如果抽样样本量不够,结果会出现较大误差,蒙特卡罗方法所估计值将可能与实际结果存在较大偏差。
2、估计值不够稳定:蒙特卡罗方法产生的结果一般存在很大的变动,估计值的结果可能会出现很大的波动,如果这种情况发生,就要调整抽样数量来达到稳定的结果。
3、结果不精确:由于蒙特卡罗方法依赖于随机样本,对精确度的要求很高,如果抽样数量不够,很可能出现精度较差的情况。
三、蒙特卡罗方法计算定积分的优点1、随机变量可定义:由于蒙特卡罗方法是基于随机变量的,所以可以通过定义方法来求出任意函数的定积分。
2、结果准确:在合理的的抽样数量下,蒙特卡罗方法的估计结果都基本准确。
3、实用性强:蒙特卡罗方法不仅实用于算法应用,还可以用于复杂估计。
四、总结蒙特卡罗方法是一种基于随机变量的,主要用于求解数学和经济类问题的方法。
它具有计算定积分快速准确、估计值结果可靠、实用性强等优点,是复杂问题求解的重要工具。
但同时也存在诸如抽样数量不足、估计值不稳定和精度较低等问题,因此在使用时要醉倒,确保估计结果的准确性。
蒙特卡罗方法求解定积分作者:程锦华来源:《课程教育研究》2018年第42期【摘要】蒙特卡罗方法,又称随机模拟,是利用随机数进行统计试验以确定随机事件相应的概率与数学期望的方法。
本文首先介绍均匀分布和强大数定律的有关内容,然后讨论用蒙特卡罗方法求定积分的理论基础,收敛速度以及在高维空间中的适用性。
【关键词】均匀分布 ;强大数定律 ;蒙特卡罗方法【中图分类号】G633.6 【文献标识码】A 【文章编号】2095-3089(2018)42-0142-021.前言蒙特卡罗(Monte Carlo)是摩纳哥国的世界著名赌城。
第二次世界大战期间,美国原子弹“曼哈顿”计划的成员冯·诺依曼和乌拉姆对裂变物质中子的随机扩散进行模拟,并以蒙特卡罗来命名这种方法。
传统的经验方法由于不能逼近真实的物理过程,所以很难得到令人满意的结果,而蒙特卡罗方法能够真实地模拟实际物理过程,故在解决实际问题时往往可以得到很圆满的结果。
比如18世纪法国科学家蒲丰就提出了著名的用投针试验来估计圆周率的方法。
本文也介绍了利用蒙特卡罗方法求解定积分的过程。
2.预备知识2.1 均匀分布的随机变量若随机变量的X的概率密度函数为:P(x)=■, ;a则称X服从区间(a,b)上的均匀分布,记作X~U(a,b)。
其分布函数为F(x)=0, ; ; ; ; x例1:假设我们从(0,1)区间上取点,取得的点在数轴上的坐标记为随机变量X,则X 服从均匀分布。
那么X落在[■,■]内的概率是多少?解:记随机变量X的概率密度函数为p(x),则P(■≤x≤■)=■p(x)dx=■1dx=■实际上(0,1)上的均匀分布和高中所学的几何概型息息相关,因为点落在[■,■]内的概率就是此区间的长度除以(0,1)区间的长度。
2.2 强大数定律定义2.1 假设我们有概率空间(Ω,F,P),定义在其上的随机变量序列X1,X2,…,Xn…及X,满足P■Xn=X=1,则称序列{Xn}几乎处处收敛到X,记为Xn→Xa.s.(n→+∞)。
蒙特卡洛(MonteCarlo)法求定积分蒙特卡洛(Monte Carlo)法是⼀类随机算法的统称。
随着⼆⼗世纪电⼦计算机的出现,蒙特卡洛法已经在诸多领域展现出了超强的能⼒。
在机器学习和⾃然语⾔处理技术中,常常被⽤到的MCMC也是由此发展⽽来。
本⽂通过蒙特卡洛法最为常见的⼀种应⽤——求解定积分,来演⽰这类算法的核⼼思想。
⽆意识统计学家法则(Law of the unconscious statistician)这是本⽂后续会⽤到的⼀个定理。
作为⼀个预备知识,我们⾸先来介绍⼀下它。
先来看⼀下维基百科上给出的解释。
In probability theory and statistics, the law of the unconscious statistician (sometimes abbreviated LOTUS) is a theorem used to calculate the 期望值 of a function g(X)" role="presentation" style="position: relative;">g(X)g(X) of a 随机变量 X"role="presentation" style="position: relative;">XX when one knows the probability distribution of X" role="presentation" style="position: relative;">XX but one does not explicitly know the distribution of g(X)" role="presentation" style="position: relative;">g(X)g(X). The form of the law can depend on the form in which one states the probability distribution of the 随机变量 X"role="presentation" style="position: relative;">XX.If it is a discrete distribution and one knows its PMF function ƒX" role="presentation"style="position: relative;">ƒXƒX (but not ƒg(X)" role="presentation" style="position: relative;">ƒg(X)ƒg(X)), then the 期望值 of g(X)" role="presentation" style="position: relative;">g(X)g(X) isE[g(X)]=∑xg(x)fX(x)" role="presentation" style="position:relative;">E[g(X)]=∑xg(x)fX(x)E[g(X)]=∑xg(x)fX(x)where the sum is over all possible values x" role="presentation" style="position: relative;">xx of X" role="presentation" style="position: relative;">XX.If it is a continuous distribution and one knows its PDF function ƒX" role="presentation">ƒXƒX (but not ƒg(X)" role="presentation">ƒg(X)ƒg(X)), then the 期望值 of g(X)"role="presentation">g(X)g(X) isE[g(X)]=∫−∞∞g(x)fX(x)dx"role="presentation">E[g(X)]=∫∞−∞g(x)fX(x)dxE[g(X)]=∫−∞∞g(x)fX(x)dxLOTUS到底表达了⼀件什么事呢?它的意思是:已知随机变量X" role="presentation"style="position: relative;">XX的概率分布,但不知道g(X)" role="presentation" style="position: relative;">g(X)g(X)的分布,此时⽤LOTUS公式能计算出函数g(X)" role="presentation"style="position: relative;">g(X)g(X)的数学期望。
蒙特卡洛方法与定积分计算
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)求得
扩展
如果你很细心,你会发现这个方法目前只适用于积分区间,且积分函数在区间上的取值也位于内的情况。
那么,对于一般区间上的定积分
呢一个很明显的思路,如果我们可以将与建立代数关系就可以了。
首先,做线性变换,令,此时,
,。
进一步如果在区间上有,令
,
则。
此时,可以得到。
其中,,。
这说明,用随机投点法计算定积分方法具有普遍意义。
举一个实例,求定积分。
显然,,由于
在上时单调减函数,所以,。
R中代码为
a=2;
b=5;
g=function(x)
{
exp(-x^2/2)/sqrt(2*pi);
}
f=function(y)
{
(g(a+(b-a)*y)-c)/(d-c);
}
c=g(5);d=g(2);s_0=(b-a)*(d-c);
n=10^4;
x=runif(n);y=runif(n);
mu_n=sum(y<=f(x));
J=mu_n/n;
J_0=s_0*J+c*(b-a);
定积分的精确值和模拟值如下:
表2
真实值
注:精确值用integrate(g,2,5)求得)
平均值法
蒙特卡洛模拟法计算定积分时还有另一种方法,叫平均值法。
这个原理也很简单:设随机变量服从上的均匀分布,则的数学期望为
所以估计的值就是估计的数学期望值。
由辛钦大数定律,可以用
的观察值的均值取估计的数学期望。
具体做法:
先用计算机产生个服从上均匀分布的随机数:。
对每一个,计算。
计算。
譬如,计算,R中的代码为
n=10^4;
x=runif(n);
f=function(x)
{
exp(-x^2/2)/sqrt(2*pi)
}
J=mean(f(x));
其精确值和模拟值如下:
表3
真实值
平均值法与随机投点法类似可以进行扩展,这里不再赘述。
结论
用蒙特卡洛模拟法计算定积分具有普遍意义。
蒙特卡洛模拟方法为我们提供了一个看待世界的新思路,即一个不具随机性的事件可以通过一定的方法用随机事件来模拟或逼近。