文档详情

蒙特卡罗算法解析.ppt

发布:2016-12-24约字共60页下载文档
文本预览下载声明
* * 舍取方法 舍取方法(Acceptance-Rejection )方法最早由 Von Neumann提出,现在已经广泛应用于各 种随机数的生成。 基本思路: 通过一个容易生成的概率分布 g 和一个取舍 准则生成另一个与 g 相近的概率分布 f 。 * 具体步骤: * 下面我们验证由上述步骤生成的随机数 Y 确实 具有密度函数 f(x) * 所以为了提高舍取法的效率,我们应该使 c 的取值尽 可能的小,也就是使 f 和 g 的分布更为相近。 * 3.标准正态分布随机数的生成 正态分布是概率统计中最重要的分布,在此 我们着重讨论如何生成标准正态分布随机数。 引理: * Box-Muller 算法 * 利用中心极限定理 设 是n个相互独立的在(0,1)上均匀分布 的随机变量,由中心极限定理知 渐近服从正态分布N(0,1).一般取n=10即可,若取n=12, 则上式简化为 再由公式 即可 得到正态分布 的随机数. * Matlab程序 Function r=rnd-u(a,b) %产生在[a,b]间均匀分布的随机数 r=a+(b-a)*rand; return * Matlab程序 Function r=rnd-beta(lamda) %模拟指数分布 %lamda表示指数分布的参数 r=-log(rand)/lamda; return * Matlab程序 Function y= rnd(mean, segema) %模拟均值为mean,方差为segma的正态分布 r=rand(1,12); x=sum(r)-6; y=segma*x+mean; return * 三. 模拟训练 例1. 模拟求近似圆周率 在边长为1的正方形内有一半径为0.5的内切圆. 现在模拟产生在正方形内均匀分布的点n个.如 果有m个在圆内,则圆面积与正方形的面积比可 近似为m/n.即л/4≈m/n л≈4m/n * n=10000 m=0; For i=1:n if rand^2+rand^2 =1 m=m+1; end end Mypi=4*m/n * 例2. 用M-C法估算定积分. 求定积分 . 分析:对于 ,如果f(x)=0,则可以通过模拟 估算.构造一个矩形包含曲边梯形,dmax f(x). 产生n(足够大)个在矩形区域内的点,如果落在由函数f(x)构成的曲边梯形内的点为m个,则所求定积分为 . * n=10^6; a=0; b=1; d=1; m=0; for i=1:n x=a+rand*(b-a); y=d*rand; if y=x^2 m=m+1; end end s=m/n*(b-a)*d * n=10^6; x=rand(1,n); y=x.^2; s=sum(y)/n 采用前面讲的方法: * 例3. 渡口模型 问题描述: 一个渡口的渡船营运者拥有一只甲板长32米,可以并排 停放两列车辆的渡船.他在考虑怎样在甲板上安排过河 车辆的位置,才能安全地运过最多数量的车辆. 分析:怎样安排过河车辆,关心一次可以运多少辆各类 车. 准备工作:观察数日,发现每次情况不尽相同,得到下列 数据和情况: (1)车辆随机到达,形成一个等待上船的车列; (2)来到车辆,轿车约占40%,卡车约占55%,摩托车约占5%; (3)轿车车身长3.5~5.5米,卡车车身长为8~10米. * 问题分析: 这是一个机理较复杂的随机问题,是遵”先到先 服务”的随机排队问题. 解决方法:采用模拟模型方法.因此需考虑以下问题: (1)应该怎样安排摩托车? (2)下一辆到达的车是什么类型? (3)怎样描述一辆车的车身长度? (4)如何安排到达车辆加入甲板上两列车队中的哪一列中去? 本实验主要模拟装载车辆的情况,暂时不考虑渡船的安全. * 模型建立: 设到达的卡车,轿车长度分别为随机变量 , . 结合实际,这里不妨设卡车,轿车的车身长度 , 均服从正态分布. 由于卡车车身长8~10米,所以卡车车长 的均 值为(8+10)/2=9米,由概率知识中的”3σ”原则, 其标准差为(9-8)/3=1/3,所以得到 . 同理可得 . * 模拟程序设计: 由以上的分析,程序设
显示全部
相似文档