(完整版)蒙特卡洛算法详讲
- 格式:doc
- 大小:772.01 KB
- 文档页数:18
蒙特卡洛光线追踪法一、介绍蒙特卡洛光线追踪法蒙特卡洛光线追踪法(Monte Carlo Ray Tracing)是一种基于概率统计的光线追踪算法,它通过随机采样来模拟光线在场景中传播的过程,从而实现对场景的真实感渲染。
与传统的光线追踪算法相比,蒙特卡洛光线追踪法具有更高的灵活性和更强的适应性,可以处理复杂场景、多次散射等问题。
二、蒙特卡洛光线追踪法原理1. 光线追踪在光线追踪中,我们从观察点出发向屏幕上每个像素发射一条射线,并计算该射线与场景中物体的交点。
如果存在交点,则从该交点出发向场景中发射新的反射或折射光线,并继续递归地进行计算。
2. 蒙特卡洛方法在传统的光线追踪中,我们需要对每个像素发射大量的射线才能得到较为真实的渲染效果。
而在蒙特卡洛光线追踪中,我们采用随机采样的方法来模拟光线的传播过程,从而减少了计算量。
具体来说,我们在每个像素上随机发射一定数量的光线,并计算这些光线与场景中物体的交点。
然后,根据一定的概率分布函数来确定光线反射或折射的方向,并继续递归地进行计算。
最终,将所有采样得到的颜色值进行平均,即可得到该像素的最终颜色值。
3. 全局照明在蒙特卡洛光线追踪中,我们还需要考虑全局照明问题。
具体来说,在每个交点处,我们需要计算该点与场景中其他物体之间的能量传输情况,并将其贡献到最终颜色值中。
为了实现全局照明效果,我们可以使用两种方法:直接光照和间接光照。
直接光照是指从交点处向场景中所有可见灯源发射一条阴影射线,并计算该射线与灯源之间的能量传输情况。
而间接光照则是指从交点处向场景中随机发射一条新的光线,并计算该光线与场景中其他物体之间的能量传输情况。
三、蒙特卡洛光线追踪法优缺点1. 优点(1)真实感渲染:蒙特卡洛光线追踪法可以模拟光线在场景中的真实传播过程,从而得到更加真实的渲染效果。
(2)适应性强:蒙特卡洛光线追踪法可以处理复杂场景、多次散射等问题,具有更高的灵活性和适应性。
(3)易于扩展:由于采用随机采样的方法,因此可以很容易地扩展到并行计算和分布式计算等领域。
Monte Carlo方法概述一、Monte Carlo历史渊源Monte Carlo方法的实质是通过大量随机试验,利用概率论解决问题的一种数值方法,基本思想是基于概率和体积间的相似性。
它和Simulation有细微区别。
单独的Simulation只是模拟一些随机的运动,其结果是不确定的;Monte Carlo在计算的中间过程中出现的数是随机的,但是它要解决的问题的结果却是确定的。
历史上有记载的Monte Carlo试验始于十八世纪末期(约1777年),当时布丰(Buffon)为了计算圆周率,设计了一个“投针试验”。
(后文会给出一个更加简单的计算圆周率的例子)。
虽然方法已经存在了200多年,此方法命名为Monte Carlo则是在二十世纪四十年,美国原子弹计划的一个子项目需要使用Monte Carlo方法模拟中子对某种特殊材料的穿透作用。
出于保密缘故,每个项目都要一个代号,传闻命名代号时,项目负责人之一von Neumann 灵犀一点选择摩洛哥著名赌城蒙特卡洛作为该项目名称,自此这种方法也就被命名为Monte Carlo方法广为流传。
十一、Monte Carlo方法适用用途(一)数值积分计算一个定积分,如,如果我们能够得到f(x)的原函数F(x),那么直接由表达式: F(x1)-F(x0)可以得到该定积分的值。
但是,很多情况下,由于f(x)太复杂,我们无法计算得到原函数F(x)的显示解,这时我们就只能用数值积分的办法。
如下是一个简单的数值积分的例子。
数值积分简单示例如图,数值积分的基本原理是在自变量x的区间上取多个离散的点,用单个点的值来代替该小段上函数f(x)值。
常规的数值积分方法是在分段之后,将所有的柱子(粉红色方块)的面积全部加起来,用这个面积来近似函数f(x)(蓝色曲线)与x轴围成的面积。
这样做当然是不精确的,但是随着分段数量增加,误差将减小,近似面积将逐渐逼近真实的面积。
Monte Carlo数值积分方法和上述类似。
Monte Carlo 方法法§1 概述Monte Carlo 法不同于确定性数值方法,它是用来解决数学和物理问题的非确定性的(概率统计的或随机的)数值方法。
Monte Carlo 方法(MCM ),也称为统计试验方法,是理论物理学两大主要学科的合并:即随机过程的概率统计理论(用于处理布朗运动或随机游动实验)和位势理论,主要是研究均匀介质的稳定状态。
它是用一系列随机数来近似解决问题的一种方法,是通过寻找一个概率统计的相似体并用实验取样过程来获得该相似体的近似解的处理数学问题的一种手段。
运用该近似方法所获得的问题的解in spirit 更接近于物理实验结果,而不是经典数值计算结果。
普遍认为我们当前所应用的MC 技术,其发展约可追溯至1944年,尽管在早些时候仍有许多未解决的实例。
MCM 的发展归功于核武器早期工作期间Los Alamos (美国国家实验室中子散射研究中心)的一批科学家。
Los Alamos 小组的基础工作刺激了一次巨大的学科文化的迸发,并鼓励了MCM 在各种问题中的应用[2]-[4]。
“Monte Carlo ”的名称取自于Monaco (摩纳哥)内以赌博娱乐而闻名的一座城市。
Monte Carlo 方法的应用有两种途径:仿真和取样。
仿真是指提供实际随机现象的数学上的模仿的方法。
一个典型的例子就是对中子进入反应堆屏障的运动进行仿真,用随机游动来模仿中子的锯齿形路径。
取样是指通过研究少量的随机的子集来演绎大量元素的特性的方法。
例如,)(x f 在b x a <<上的平均值可以通过间歇性随机选取的有限个数的点的平均值来进行估计。
这就是数值积分的Monte Carlo 方法。
MCM 已被成功地用于求解微分方程和积分方程,求解本征值,矩阵转置,以及尤其用于计算多重积分。
任何本质上属随机组员的过程或系统的仿真都需要一种产生或获得随机数的方法。
这种仿真的例子在中子随机碰撞,数值统计,队列模型,战略游戏,以及其它竞赛活动中都会出现。
马尔可夫链蒙特卡洛算法的详细步骤解析马尔可夫链蒙特卡洛算法(Markov Chain Monte Carlo,MCMC)是一种基于统计的随机模拟算法,用于从复杂的概率分布中抽取样本。
在实际应用中,MCMC算法被广泛用于概率推断、参数估计、贝叶斯统计等问题的求解。
本文将详细解析MCMC算法的步骤及其原理,以便读者能够更好地理解和应用该算法。
1. 马尔可夫链MCMC算法的核心是马尔可夫链。
马尔可夫链是一个随机过程,具有“无记忆”的性质,即未来的状态只依赖于当前的状态,与过去的状态无关。
假设我们要从一个概率分布π(x)中抽取样本,可以构造一个转移核函数Q(x'|x),表示在当前状态为x时,下一个状态为x'的概率。
若满足细致平稳条件,即π(x)Q(x'|x) =π(x')Q(x|x'),则该马尔可夫链的平稳分布即为π(x)。
MCMC算法利用马尔可夫链的平稳分布来抽取样本。
2. Metropolis-Hastings算法Metropolis-Hastings算法是MCMC算法的一种经典实现。
其步骤如下:(1)初始化:选择一个初始状态x(0)。
(2)抽样:根据转移核函数Q(x'|x)抽取候选状态x'。
(3)接受-拒绝:计算接受概率α = min{1, π(x')Q(x|x') /π(x)Q(x'|x)}。
以α为概率接受候选状态x',否则保持当前状态x。
(4)迭代:重复步骤(2)和(3),直到达到设定的抽样次数。
Metropolis-Hastings算法通过接受-拒绝的方式生成符合目标分布π(x)的样本,但其效率较低。
因此,后续提出了各种改进算法,如Gibbs抽样、Hamiltonian Monte Carlo等。
3. Gibbs抽样Gibbs抽样是一种特殊的MCMC算法,适用于多维变量的联合分布抽样。
其步骤如下:(1)初始化:选择一个初始状态x(0)。
⼀⽂详解蒙特卡洛(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公式能计算出函数的数学期望。
马尔可夫链蒙特卡洛算法的详细步骤解析1. 蒙特卡洛模拟的基本原理蒙特卡洛模拟是指通过随机抽样的方法来估计一些数学问题的解。
它的基本原理是利用大量的随机样本来近似估计和计算数学问题的解。
在实际应用中,蒙特卡洛模拟通常用于求解无法通过解析方法得到精确解的问题。
2. 马尔可夫链的基本概念马尔可夫链是指一个具有马尔可夫性质的随机过程。
这种性质是指给定当前的状态,未来的状态只与当前状态有关,而与过去的状态无关。
马尔可夫链具有平稳分布和转移矩阵等基本属性。
3. 马尔可夫链蒙特卡洛算法的基本思想马尔可夫链蒙特卡洛算法是一种基于马尔可夫链的蒙特卡洛模拟方法。
其基本思想是通过构建一个满足平稳分布的马尔可夫链,利用该链的平稳分布来估计和计算数学问题的解。
该算法的核心在于构建马尔可夫链和利用该链进行随机抽样。
4. 马尔可夫链蒙特卡洛算法的详细步骤(1)初始化:选择一个合适的初始状态,并根据转移概率矩阵进行状态转移,直到达到平稳分布。
(2)平稳分布的估计:通过对平稳分布进行随机抽样,估计得到平稳分布的近似值。
(3)数学问题的解估计:利用平稳分布的近似值来估计和计算数学问题的解。
5. 马尔可夫链蒙特卡洛算法的应用马尔可夫链蒙特卡洛算法在估计和计算复杂的数学问题上具有广泛的应用。
例如在金融领域中,可以用该算法来估计股票价格的随机波动;在统计学中,可以用该算法来估计参数的置信区间等。
6. 马尔可夫链蒙特卡洛算法的优缺点(1)优点:该算法可以用于估计和计算各种复杂的数学问题,且不需要事先对问题进行特定的假设和简化。
(2)缺点:该算法需要大量的计算和存储资源,并且在某些情况下可能收敛速度较慢。
7. 马尔可夫链蒙特卡洛算法的改进针对算法的收敛速度较慢的问题,可以通过改进马尔可夫链的构建方式和转移概率矩阵来提高算法的效率。
例如可以采用多链并行的方式来构建马尔可夫链,以加快算法的收敛速度。
8. 结语马尔可夫链蒙特卡洛算法是一种基于马尔可夫链的蒙特卡洛模拟方法,通过构建满足平稳分布的马尔可夫链来估计和计算数学问题的解。
蒙洛卡特算法蒙洛卡特算法是一种基于随机抽样技术的数值计算方法,广泛应用于风险评估、金融衍生品定价、物理模拟等众多领域。
本文将对蒙洛卡特算法的原理、应用以及优势进行介绍。
一、蒙洛卡特算法原理蒙特卡洛算法是一种随机化算法,基于随机抽样的方法获取样本来求解问题。
直接蒙特卡洛算法是一种非常原始的方法,将问题转化为一个期望值,使用随机抽样的方法进行估计。
而蒙洛卡特算法则是通过改进直接蒙特卡洛算法,使得随机抽样的效率更高。
具体来说,蒙洛卡特算法首先通过随机抽样的方法生成多个独立的随机数序列,这些序列称为样本。
然后,将这些样本输入到函数中进行计算,最后对计算结果进行统计分析得到估计值。
蒙洛卡特算法有以下几个特点:1. 独立性。
样本之间应该是相互独立的,这意味着每个样本都是完全独立于其他样本的,并且可以多次使用。
2. 随机性。
随机抽样的过程应该是完全随机的,这意味着每个样本的值应该是随机的,并且应该具有相同的概率分布。
3. 代表性。
样本应该是代表性的,这意味着样本的数量应该足够大,以及样本应该来自于整个概率分布的区域。
4. 收敛性。
当样本数量足够大时,蒙洛卡特算法会收敛于真值。
二、蒙洛卡特算法应用1. 风险评估。
用蒙洛卡特算法进行风险评估,可以帮助投资者更加准确地评估投资的风险。
2. 金融衍生产品定价。
蒙洛卡特算法可以帮助金融衍生产品的定价,例如期权、期货等。
3. 物理模拟。
使用蒙洛卡特算法可以模拟物理系统,例如量子场论、蒙特卡洛模拟等。
4. 优化模型。
蒙洛卡特算法可以用于优化模型,例如寻找一个函数的最小值或最大值。
三、蒙洛卡特算法优势1. 可分布计算。
蒙洛卡特算法允许在分布式计算环境下运行,这使得它能够利用并行计算的优势来提高计算效率。
2. 适应高维数据。
相比于其他的数值计算方法,蒙洛卡特算法在处理高维数据时表现更加优秀。
3. 不要求导数。
相比较于一些需要求导数的数值计算方法,例如最优化算法和差分方程算法,蒙洛卡特算法不需要对函数进行求导。
(完整版)蒙特卡洛算法详讲Monte Carlo 法§8.1 概述Monte Carlo 法不同于前⾯⼏章所介绍的确定性数值⽅法,它是⽤来解决数学和物理问题的⾮确定性的(概率统计的或随机的)数值⽅法。
Monte Carlo ⽅法(MCM ),也称为统计试验⽅法,是理论物理学两⼤主要学科的合并:即随机过程的概率统计理论(⽤于处理布朗运动或随机游动实验)和位势理论,主要是研究均匀介质的稳定状态[1]。
它是⽤⼀系列随机数来近似解决问题的⼀种⽅法,是通过寻找⼀个概率统计的相似体并⽤实验取样过程来获得该相似体的近似解的处理数学问题的⼀种⼿段。
运⽤该近似⽅法所获得的问题的解in spirit 更接近于物理实验结果,⽽不是经典数值计算结果。
普遍认为我们当前所应⽤的MC 技术,其发展约可追溯⾄1944年,尽管在早些时候仍有许多未解决的实例。
MCM 的发展归功于核武器早期⼯作期间Los Alamos (美国国家实验室中⼦散射研究中⼼)的⼀批科学家。
Los Alamos ⼩组的基础⼯作刺激了⼀次巨⼤的学科⽂化的迸发,并⿎励了MCM 在各种问题中的应⽤[2]-[4]。
“Monte Carlo ”的名称取⾃于Monaco (摩纳哥)内以赌博娱乐⽽闻名的⼀座城市。
Monte Carlo ⽅法的应⽤有两种途径:仿真和取样。
仿真是指提供实际随机现象的数学上的模仿的⽅法。
⼀个典型的例⼦就是对中⼦进⼊反应堆屏障的运动进⾏仿真,⽤随机游动来模仿中⼦的锯齿形路径。
取样是指通过研究少量的随机的⼦集来演绎⼤量元素的特性的⽅法。
例如,)(x f 在b x a <<上的平均值可以通过间歇性随机选取的有限个数的点的平均值来进⾏估计。
这就是数值积分的Monte Carlo ⽅法。
MCM 已被成功地⽤于求解微分⽅程和积分⽅程,求解本征值,矩阵转置,以及尤其⽤于计算多重积分。
任何本质上属随机组员的过程或系统的仿真都需要⼀种产⽣或获得随机数的⽅法。
Monte Carlo 法§8.1 概述Monte Carlo 法不同于前面几章所介绍的确定性数值方法,它是用来解决数学和物理问题的非确定性的(概率统计的或随机的)数值方法。
Monte Carlo 方法(MCM ),也称为统计试验方法,是理论物理学两大主要学科的合并:即随机过程的概率统计理论(用于处理布朗运动或随机游动实验)和位势理论,主要是研究均匀介质的稳定状态[1]。
它是用一系列随机数来近似解决问题的一种方法,是通过寻找一个概率统计的相似体并用实验取样过程来获得该相似体的近似解的处理数学问题的一种手段。
运用该近似方法所获得的问题的解in spirit 更接近于物理实验结果,而不是经典数值计算结果。
普遍认为我们当前所应用的MC 技术,其发展约可追溯至1944年,尽管在早些时候仍有许多未解决的实例。
MCM 的发展归功于核武器早期工作期间LosAlamos (美国国家实验室中子散射研究中心)的一批科学家。
Los Alamos 小组的基础工作刺激了一次巨大的学科文化的迸发,并鼓励了MCM 在各种问题中的应用[2]-[4]。
“Monte Carlo ”的名称取自于Monaco (摩纳哥)内以赌博娱乐而闻名的一座城市。
Monte Carlo 方法的应用有两种途径:仿真和取样。
仿真是指提供实际随机现象的数学上的模仿的方法。
一个典型的例子就是对中子进入反应堆屏障的运动进行仿真,用随机游动来模仿中子的锯齿形路径。
取样是指通过研究少量的随机的子集来演绎大量元素的特性的方法。
例如,)(x f 在b x a <<上的平均值可以通过间歇性随机选取的有限个数的点的平均值来进行估计。
这就是数值积分的Monte Carlo 方法。
MCM 已被成功地用于求解微分方程和积分方程,求解本征值,矩阵转置,以及尤其用于计算多重积分。
任何本质上属随机组员的过程或系统的仿真都需要一种产生或获得随机数的方法。
这种仿真的例子在中子随机碰撞,数值统计,队列模型,战略游戏,以及其它竞赛活动中都会出现。
Monte Carlo 计算方法需要有可得的、服从特定概率分布的、随机选取的数值序列。
§8.2 随机数和随机变量的产生[5]-[10]全面的论述了产生随机数的各类方法。
其中较为普遍应用的产生随机数的方法是选取一个函数)(x g ,使其将整数变换为随机数。
以某种方法选取0x ,并按照)(1k k x g x =+产生下一个随机数。
最一般的方程)(x g 具有如下形式:m c ax x g mod )()(+=(8.1)其中=0x 初始值或种子(00>x ) =a 乘法器(0≥a )=c 增值(0≥c )=m 模数对于t 数位的二进制整数,其模数通常为t 2。
例如,对于31位的计算机m 即可取1312-。
这里a x ,0和c 都是整数,且具有相同的取值范围0,,x m c m a m >>>。
所需的随机数序{}n x 便可由下式得m c ax x n n m od )(1+=+(8.2)该序列称为线性同余序列。
例如,若70===c a x 且10=m ,则该序列为7,6,9,0,7,6,9,0…… (8.3)可以证明,同余序列总会进入一个循环套;也就是说,最终总会出现一个无休止重复的数字的循环。
(8.3)式中序列周期长度为4。
当然,一个有用的序列必是具有相对较长周期的序列。
许多作者都用术语乘同余法和混合同余法分别指代0=c 和0≠c 时的线性同余法。
选取c a x ,,0和m 的法则可参见[6,10]。
这里我们只关心在区间)1,0(内服从均匀分布的随机数的产生。
用字符U 来表示这些数字,则由式(8.2)可得mx U n 1-=(8.4)这样U 仅在数组{}m m m m /)1(,......,/2,/1,0-中取值。
(对于区间(0,1)内的随机数,一种快速检测其随机性的方法是看其均值是否为0.5。
其它检测方法可参见[3,6]。
)产生区间),(b a 内均匀分布的随机数X ,可用下式U a b a X )(-+=(8.5)用计算机编码产生的随机数(利用式(8.2)和(8.4))并不是完全随机的;事实上,给定序列种子,序列的所有数字U 都是完全可预测的。
一些作者为强调这一点,将这种计算机产生的序列称为伪随机数。
但如果适当选取c a ,和m ,序列U 的随机性便足以通过一系列的统计检测。
它们相对于真随机数具有可快速产生、需要时可再生的优点,尤其对于程序调试。
Monte Carlo 程序中通常需要产生服从给定概率分布)(x F 的随机变量X 。
该步可用[6],[13]-[15]中的几种方法加以实现,其中包括直接法和舍去法。
直接法(也称反演法或变换法),需要转换与随机变量X 相关的累积概率函数)()(x X prob x F ≤=(即:)(x F 为x X ≤的概率)。
1)(0≤≤x F 显然表明,通过产生(0,1)内均匀分布随机数U ,经转换我们可得服从)(x F 分布的随机样本X 。
为了得到这样的具有概率分布)(x F 的随机数X ,不妨设)(x F U =,即可得)(1U F X -= (8.6)其中X 具有分布函数)(x F 。
例如,若X 是均值为μ呈指数分布的随机变量,且 ∞<<-=-x e x F x 0,1)(/μ (8.7)在)(x F U =中解出X 可得)1ln(U X --=μ (8.8)由于)1(U -本身就是区间(0,1)内的随机数,故可简写为U X ln μ-= (8.9)有时(8.6)式所需的反函数)(1x F -不存在或很难获得。
这种情况可用舍去法来处理。
令dxx dF x f )()(=为随机变量X 的概率密度函数。
令b x a >>时的0)(=x f ,且)(x f 上界为M (即:M x f ≤)(),如图8.1所示。
我们产生区间(0,1)内的两个随机数),(21U U ,则11)(U a b a X -+= M U f 21= (8.10)分别为在(a,b)和(0,M)内均匀分布的随机数。
若)(11X f f ≤ (8.11)则1X 为X 的可选值,否则被舍去,然后再试新的一组),(21U U 。
如此运用舍去法,所有位于)(x f 以上的点都被舍去,而位于)(x f 上或以下的点都由11)(U a b a X -+=来产生1X 。
图8.1 舍去法产生概率密度函数为)(x f 的随机变量例8.1 设计一子程序使之产生0,1之间呈均匀分布的随机数U 。
用该程序产生随机变Θ,其概率分布由下式给定πθθθ<<-=0),cos 1(21)(T 解:生成U 的子程序如图8.2所示。
该子程序中,,0,21474836471221==-=c m 且1680775==a 。
应用种子数(如1234),主程序中每调用一次子程序,就会生成一个随机数U 。
种子数可取1到m 间的任一整数。
0001C**********************************************************0002 C PROGRAM FOR GENERATING RANDOM V ARIABLES WITH0003 C A GIVEN PROBABILITY DISTRIBUTION0004C**********************************************************00050006 DOUBLE PRECISION ISEED00070008 ISEED=1234.D00009 DO 10 I=1,1000010 CALL RANSOM(ISEED,R)0011 THETA=ACOSD(1.0-2.0*R)0012 WRITE(6,*)I,THETA0013 10 CONTINUE0014 STOP0015 END0001C**********************************************************0002 C SUBROUTINE FOR GENERATING RANDOM NUMBERS IN0003 C THE INTERV AL (0,1)0004C**********************************************************00050006 SUBROUTINE RANDOM (ISEED,R)0007 DOUBLE PRECISION ISDDE,DEL,A0008 DATA DEL,A/2147483647.D0,16807.D0/00090010 ISDDE=DMOD(A*ISDDE,DEL)0011 R=ISDDE/DEL0012 RETURN0013 END图8.2 例8.1的随机数生成器图8.2的子程序只是为了说明本章所介绍的一些概念。
大多数计算机都有生成随机数的子程序。
为了生成随机变量Θ,令)cos 1(21)(Θ-=Θ=T U 则有 )21(cos )(11U U T -==Θ--据此,一系列具有给定分布的随机变量Θ便可由图8.2所示主程序中生成。
§8.3 误差计算Monte Carlo 程序给出的解按大量的检测统计都达到了平均值。
因此,该解中包含了平均值附近的浮动量,而且不可能达到100%的置信度。
要计算Monte Carlo 算法的统计偏差,就必须采用与统计变量相关的各种统计方法。
我们只简要介绍期望值和方差的概念,并利用中心极限定理来获得误差估计[13,16]。
设X 是随机变量。
则X 的期望值或均值x 定义为⎰∞∞-=dx x xf x )( (8.12)这里)(x f 是X 的概率密度分布函数。
如果从)(x f 中取些独立的随机样本N x x x ,...,,21,那么的x 估计值就表现为N 个样本值的均值。
∑==N n n xN x 11ˆ(8.13)x 是X 的真正的平均值,而xˆ只是x 的有着准确期望值的无偏估计。
虽然x ˆ的期望值等于x ,但x x≠ˆ。
因此,我们还需要x ˆ的值在x 附近的分布测度。
为了估计X 以及xˆ在x 附近的的值的分布,我们需要引入X 的方差,其定义为X 与x 差的平方的期望值,即⎰∞∞--=-==dx x f x x x x x Var )()()()(222σ (8.14) 由2222)(x x x x x x +-=-,故有⎰⎰⎰∞∞-∞∞-∞∞-+-=dx x f x dx x xf x dx x f x x )()(2)()(222σ (8.15)或者 222)(x x x -=σ (8.16)方差的平方根称为标准差,即 2/122)()(x x x -=σ (8.17)标准差给出了x 在均值x 附近的分布测度,并由此给出了误差幅度的阶数。