蒙特卡洛算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
今 日 主 讲
何谓“算法”? 蒙特卡洛算法概述 蒙特卡洛算法基本思想 蒙特卡洛算法的应用 蒙特卡洛算法与数学建模不可 不说的故事
百度百科
何 谓 算 法 ?
模型分析的一组可行的、确定的和 有穷的规则。
简而言之
算法(Algorithm)是指解题方案的 准确而完整的描述,是一系列解决 问题的清晰指令,算法代表着用系 统的方法描述解决问题的策略机制。
在画有许多间距为 d 的等距平行线的白纸上,随 机投掷一根长为 l ( l d ) 的均匀直针,求针与平 行线相交的概率,并计算的 值。
clear;clc; n=100000;l=0.5;d=1;m=0; for i=1:n alpha=rand*pi; y=rand*d/2; if y<=l/2*sin(alpha) m=m+1; end end fprintf('针与平行线相交的频率为: %d\n',m/n); fprintf('计算出来的 pi 为: %d\n',2*n*l/(m*d));
用蒙特卡罗投点法计算 的值
clear;clc; n=100000; a=2; m=0; for i=1:n x=rand*a/2;y=rand*a/2; if ( x^2 + y^2 <= (a/2)^2 ) m=m+1; end end fprintf('计算出来的pi为:%d',4*m/n);
实验者
沃尔弗 斯密思 福克斯 拉查里尼
年份
1850 1855 1894 1901
投计次数
5000 3204 1120 3408
π的实验值
3.1596 3.1553 3.1419 3.1415929
算 法 基 本 思 想
由上面的例子可以看出,当所求问题的 解是某个事件的概率,或者是某个随机 变量的数学期望,或者是与之有关的量 时,通过某种试验的方法,得出该事件 发生的频率,再通过它得到问题的解。 这就是蒙特卡洛方法的基本思想。
经过长期观察发现,我方指挥所对敌方目标的指 示有50%是准确的,而我方火力单位,在指示正 确时,有1/3的射击效果能毁伤敌人一门火炮, 有1/6的射击效果能全部毁伤敌人火炮. 现在希望能用某种方式把我方将要对敌人实施的 20次打击结果显现出来,确ห้องสมุดไป่ตู้有效射击的比率及 毁伤敌方火炮的平均值。
分析:这是一个概率问题,可以通过理论计算
蒲丰氏问题
算 法 基 本 思 想
为了求得圆周率π值,在十九世纪后期,有 很多人作了这样的试验:将长为l的一根针 任意投到地面上,用针与一组相间距离为a ( l<a)的平行线相交的频率代替概率P, 再利用准确的关系式: 求出π值:
2l P a
2l 2l N ( ) aP a n
其中N为投计次数,n为针与平行线相交次 数。这就是古典概率论中著名的蒲丰氏问 题。
评价因子
时间复杂度和空间复杂度。
蒙 特 卡 洛 算 法 概 述
蒙特卡洛算法(Monte Carlo method) 是以概率和统计的理论、方法为基础 的一种计算方法,将所求解的问题同 一定的概率模型相联系,用电子计算 机实现统计模拟或抽样,以获得问题 的近似解,故又称统计模拟法或统计 试验法。
得到相应的概率和期望值.但这样只能给出作战 行动的最终静态结果,而显示不出作战行动的动 态过程.
需要模拟出以下两件事:
[1]观察所对目标的指示正确与否
模拟试验有两种结果,每一种结果出现的概率都是1/2。
问 题 分 析
因此,可用投掷一枚硬币的方式予以确定,当硬币出现 正面时为指示正确,反之为不正确.
符 号 说 明
i:要模拟的打击次数; k1:没击中敌人火炮的射击总数; k2:击中敌人一门火炮的射击总数; k3:击中敌人两门火炮的射击总数; E:有效射击比率; E1:20次射击平均每次毁伤敌人的火炮数。
初始化:i=0,k1=0,k2=0,k3=0
i=i+1
模 拟 框 图
Y 硬币正面?
1,2,3
算 法 来 源
蒙特卡洛是摩纳哥的一个城市,以赌博闻 名于世界。蒙特卡洛算法借用这一城市的 名称是为了象征性地表明该方法的概率统 计的特点。
蒙特卡洛算法作为一种计算方法,是由 S.M.乌拉姆和J.冯•诺伊曼在20世纪40年代 中叶为研制核武器的需要而首先提出来的。
Monte-Carlo, Monaco
用蒙特卡洛方法进行计算机模拟的步骤:
计 算 机 模 拟
[1] 设计一个逻辑框图,即模拟模型. [2] 根据流程图编写程序,模拟随机现象.可通 过具有各种概率分布的模拟随机数来模拟随机现 象. [3] 分析模拟结果,计算所需要结果.
随 机 数 生 成 函 数
rand(m,n)
生成一个满足均匀分布的 m n 随机矩阵,矩
取 整 函 数
fix(x) floor(x) ceil(x) round(x)
: 截尾取整,直接将小数部分舍去 : 不超过 x 的最大整数
: 不小于 x 的最小整数
: 四舍五入取整
实 战 演 练
①随机投掷均匀硬币,验证国徽朝 上与朝下的概率是否都是 1/2 。 ②随机投掷骰子,验证各点出现的 概率是否为 1/6 。
蒙特卡洛方法的基本思想虽然早已被人 们提出,却很少被使用。直到电子计算 机出现后,使得人们可以通过电子计算 机来模拟巨大数目的随机试验过程,使 得蒙特卡洛方法得以广泛地应用,在现 代化的科学技术中发挥应有的作用
算 法 应 用 举 例
在我方某前沿防守地域,敌人以一个炮排(含两 门火炮)为单位对我方进行干扰和破坏.为躲避 我方打击,敌方对其阵地进行了伪装并经常变换 射击地点。
分析知针与平行线相交的充要条件是:
1 sin 2 a 其中:0 x ,0 π 2 建立直角坐标系 ( , x),上述条件在坐标系下将 x
是曲线所围成的曲边梯形区域。由几何概率知:
1 sin d g的面积 2 0 2l P a G的面积 a 2
一些人进行了实验,其结果列于下 表:
2010年全国赛A题
阵的每个元素都在 (0,1) 之间。 注:rand(n)=rand(n,n)
randn(m,n)
生成一个满足正态 m n 的随机矩阵
randperm(m)
生成一个由 1:m 组成的随机排列
perms(1:n)
生成由 1:n 组成的全排列,共 n! 个
normrnd(MU,SIGMA,m,n)
[2]当指示正确时,我方火力单位的射击结果情况
模拟试验有三种结果:毁伤一门火炮的可能性为1/3(即 2/6),毁伤两门的可能性为1/6,没能毁伤敌火炮的可能 性为1/2(即3/6). 这时可用投掷骰子的方法来确定: 如果出现的是1、2、3三个点:则认为没能击中敌人; 如果出现的是4、5点:则认为毁伤敌人一门火炮; 若出现的是6点:则认为毁伤敌人两门火炮.
1 1 1 0 0.25 2 2 2
P(A1) = P(j=0)P(A1∣j=0) + P(j=1)P(A1∣j=1) =
1 1 1 1 0 2 2 3 6
P(A2) = P(j=0)P(A2∣j=0) + P(j=1)P(A2∣j=1)
1 1 1 1 = 0 2 2 6 12 1 1 1 2 0.33 E1 = 6 12
生成正态(高斯)分布的随机数
exprnd 指数分布的随机数生成器
geornd 几何分布的随机数生成器 poissrnd 泊松分布的随机数生成器 unidrnd 离散均匀分布的随机数生成器 unifrnd 连续均匀分布的随机数生成器 betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器
N
骰子点数?
4,5 6
k1=k1+1
k2=k2+1
k3=k3+1
k1=k1+1
Y i<20? N E=(k2+k3)/20 E1=0*k1/20+1*k2/20+2*k3/20 停止
确 0 观察所对目标指示不正 设: j 1 观察所对目标指示正确
理 论 计 算
A0:射中敌方火炮的事件;A1:射中敌方一门火炮的事件; A2:射中敌方两门火炮的事件. 则由全概率公式: E = P(A0) = P(j=0)P(A0∣j=0) + P(j=1)P(A0∣j=1) =
何谓“算法”? 蒙特卡洛算法概述 蒙特卡洛算法基本思想 蒙特卡洛算法的应用 蒙特卡洛算法与数学建模不可 不说的故事
百度百科
何 谓 算 法 ?
模型分析的一组可行的、确定的和 有穷的规则。
简而言之
算法(Algorithm)是指解题方案的 准确而完整的描述,是一系列解决 问题的清晰指令,算法代表着用系 统的方法描述解决问题的策略机制。
在画有许多间距为 d 的等距平行线的白纸上,随 机投掷一根长为 l ( l d ) 的均匀直针,求针与平 行线相交的概率,并计算的 值。
clear;clc; n=100000;l=0.5;d=1;m=0; for i=1:n alpha=rand*pi; y=rand*d/2; if y<=l/2*sin(alpha) m=m+1; end end fprintf('针与平行线相交的频率为: %d\n',m/n); fprintf('计算出来的 pi 为: %d\n',2*n*l/(m*d));
用蒙特卡罗投点法计算 的值
clear;clc; n=100000; a=2; m=0; for i=1:n x=rand*a/2;y=rand*a/2; if ( x^2 + y^2 <= (a/2)^2 ) m=m+1; end end fprintf('计算出来的pi为:%d',4*m/n);
实验者
沃尔弗 斯密思 福克斯 拉查里尼
年份
1850 1855 1894 1901
投计次数
5000 3204 1120 3408
π的实验值
3.1596 3.1553 3.1419 3.1415929
算 法 基 本 思 想
由上面的例子可以看出,当所求问题的 解是某个事件的概率,或者是某个随机 变量的数学期望,或者是与之有关的量 时,通过某种试验的方法,得出该事件 发生的频率,再通过它得到问题的解。 这就是蒙特卡洛方法的基本思想。
经过长期观察发现,我方指挥所对敌方目标的指 示有50%是准确的,而我方火力单位,在指示正 确时,有1/3的射击效果能毁伤敌人一门火炮, 有1/6的射击效果能全部毁伤敌人火炮. 现在希望能用某种方式把我方将要对敌人实施的 20次打击结果显现出来,确ห้องสมุดไป่ตู้有效射击的比率及 毁伤敌方火炮的平均值。
分析:这是一个概率问题,可以通过理论计算
蒲丰氏问题
算 法 基 本 思 想
为了求得圆周率π值,在十九世纪后期,有 很多人作了这样的试验:将长为l的一根针 任意投到地面上,用针与一组相间距离为a ( l<a)的平行线相交的频率代替概率P, 再利用准确的关系式: 求出π值:
2l P a
2l 2l N ( ) aP a n
其中N为投计次数,n为针与平行线相交次 数。这就是古典概率论中著名的蒲丰氏问 题。
评价因子
时间复杂度和空间复杂度。
蒙 特 卡 洛 算 法 概 述
蒙特卡洛算法(Monte Carlo method) 是以概率和统计的理论、方法为基础 的一种计算方法,将所求解的问题同 一定的概率模型相联系,用电子计算 机实现统计模拟或抽样,以获得问题 的近似解,故又称统计模拟法或统计 试验法。
得到相应的概率和期望值.但这样只能给出作战 行动的最终静态结果,而显示不出作战行动的动 态过程.
需要模拟出以下两件事:
[1]观察所对目标的指示正确与否
模拟试验有两种结果,每一种结果出现的概率都是1/2。
问 题 分 析
因此,可用投掷一枚硬币的方式予以确定,当硬币出现 正面时为指示正确,反之为不正确.
符 号 说 明
i:要模拟的打击次数; k1:没击中敌人火炮的射击总数; k2:击中敌人一门火炮的射击总数; k3:击中敌人两门火炮的射击总数; E:有效射击比率; E1:20次射击平均每次毁伤敌人的火炮数。
初始化:i=0,k1=0,k2=0,k3=0
i=i+1
模 拟 框 图
Y 硬币正面?
1,2,3
算 法 来 源
蒙特卡洛是摩纳哥的一个城市,以赌博闻 名于世界。蒙特卡洛算法借用这一城市的 名称是为了象征性地表明该方法的概率统 计的特点。
蒙特卡洛算法作为一种计算方法,是由 S.M.乌拉姆和J.冯•诺伊曼在20世纪40年代 中叶为研制核武器的需要而首先提出来的。
Monte-Carlo, Monaco
用蒙特卡洛方法进行计算机模拟的步骤:
计 算 机 模 拟
[1] 设计一个逻辑框图,即模拟模型. [2] 根据流程图编写程序,模拟随机现象.可通 过具有各种概率分布的模拟随机数来模拟随机现 象. [3] 分析模拟结果,计算所需要结果.
随 机 数 生 成 函 数
rand(m,n)
生成一个满足均匀分布的 m n 随机矩阵,矩
取 整 函 数
fix(x) floor(x) ceil(x) round(x)
: 截尾取整,直接将小数部分舍去 : 不超过 x 的最大整数
: 不小于 x 的最小整数
: 四舍五入取整
实 战 演 练
①随机投掷均匀硬币,验证国徽朝 上与朝下的概率是否都是 1/2 。 ②随机投掷骰子,验证各点出现的 概率是否为 1/6 。
蒙特卡洛方法的基本思想虽然早已被人 们提出,却很少被使用。直到电子计算 机出现后,使得人们可以通过电子计算 机来模拟巨大数目的随机试验过程,使 得蒙特卡洛方法得以广泛地应用,在现 代化的科学技术中发挥应有的作用
算 法 应 用 举 例
在我方某前沿防守地域,敌人以一个炮排(含两 门火炮)为单位对我方进行干扰和破坏.为躲避 我方打击,敌方对其阵地进行了伪装并经常变换 射击地点。
分析知针与平行线相交的充要条件是:
1 sin 2 a 其中:0 x ,0 π 2 建立直角坐标系 ( , x),上述条件在坐标系下将 x
是曲线所围成的曲边梯形区域。由几何概率知:
1 sin d g的面积 2 0 2l P a G的面积 a 2
一些人进行了实验,其结果列于下 表:
2010年全国赛A题
阵的每个元素都在 (0,1) 之间。 注:rand(n)=rand(n,n)
randn(m,n)
生成一个满足正态 m n 的随机矩阵
randperm(m)
生成一个由 1:m 组成的随机排列
perms(1:n)
生成由 1:n 组成的全排列,共 n! 个
normrnd(MU,SIGMA,m,n)
[2]当指示正确时,我方火力单位的射击结果情况
模拟试验有三种结果:毁伤一门火炮的可能性为1/3(即 2/6),毁伤两门的可能性为1/6,没能毁伤敌火炮的可能 性为1/2(即3/6). 这时可用投掷骰子的方法来确定: 如果出现的是1、2、3三个点:则认为没能击中敌人; 如果出现的是4、5点:则认为毁伤敌人一门火炮; 若出现的是6点:则认为毁伤敌人两门火炮.
1 1 1 0 0.25 2 2 2
P(A1) = P(j=0)P(A1∣j=0) + P(j=1)P(A1∣j=1) =
1 1 1 1 0 2 2 3 6
P(A2) = P(j=0)P(A2∣j=0) + P(j=1)P(A2∣j=1)
1 1 1 1 = 0 2 2 6 12 1 1 1 2 0.33 E1 = 6 12
生成正态(高斯)分布的随机数
exprnd 指数分布的随机数生成器
geornd 几何分布的随机数生成器 poissrnd 泊松分布的随机数生成器 unidrnd 离散均匀分布的随机数生成器 unifrnd 连续均匀分布的随机数生成器 betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器
N
骰子点数?
4,5 6
k1=k1+1
k2=k2+1
k3=k3+1
k1=k1+1
Y i<20? N E=(k2+k3)/20 E1=0*k1/20+1*k2/20+2*k3/20 停止
确 0 观察所对目标指示不正 设: j 1 观察所对目标指示正确
理 论 计 算
A0:射中敌方火炮的事件;A1:射中敌方一门火炮的事件; A2:射中敌方两门火炮的事件. 则由全概率公式: E = P(A0) = P(j=0)P(A0∣j=0) + P(j=1)P(A0∣j=1) =