蒙特卡洛算法在数值积分中应用.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例5 利用Monte Carlo方法计算一个简单的积分 (1) 先考虑样本平均值法: 产生n个U(0,1)随机数x1,…,xn, 则 g(x)=1, 0x1,为U(0,1)对应的概率密度. 由此 function result=zycy1(a,b, mm) %a是积分的下限 %b是积分的上限 %积分函数 %mm 是随机实验次数 sum=0; xrandnum = unifrnd(a,b,1,mm); for ii=1:mm sum=sum+exp (xrandnum(1,ii)); end result=sum/mm result=zycy1(0,1, 1000)=1.7267 result=zycy1(0,1, 10000)=1.7199 result=zycy1(0,1, 100000)=1.7171 True value is 1.7183 例6 利用Monte Carlo方法计算一个简单的积分 (2) 重要抽样法: 利用线性近似,取(0,1)上密度函数 由重要抽样法思想,要选择一个与ex相似的密度函数. 我们知道,ex的Taylor展开为 设x1,…,xn是来自g(x)的随机数,则? 的估计为 估计步骤: g(x)的随机数对应分布函数为 (1)产生n个U(0,1)随机数u1,…,un, 则 (2)xi= (3) function result=zycy2(a,b, mm) %a是积分的下限 %b是积分的上限 %积分函数 %mm 是随机实验次数 sum=0; urandnum = unifrnd(a,b,1,mm); xrandnum = -1+sqrt(1+3.*unifrnd); for ii=1:mm sum=sum+exp (xrandnum(1,ii))/(1+ xrandnum(1,ii)); end result=1.5*sum/mm result=zycy2(0,1, 1000)=1.7222 result=zycy1(0,1, 10000)=1.7174 result=zycy1(0,1, 100000)=1.7185 True value is 1.7183 分层抽样法 同样是利用贡献率大小来降低估计方差的方法。它首先是把样本空间 D 分成一些小区间D1, …, Dm,且诸Di不交, ,然后在各个小区间内的抽样数由其贡献大小决定。对积分贡献大的Di抽样多,可提高抽样效率。如果能够提出较好抽样区间的分配和各子区间内抽样次数的分配方案,分层抽样法估计积分可以达到非常令人满意的效果。 关联抽样法 将需要估计的积分分解成两个积分之差, 对?的估计转化为对I1,I2 的估计的差。即 由于 所以, ? 估计方差的大小与I1,I2 的估计的相关度有关,若两者的正相关程度越高,则? 的估计方差越小。这便是关联抽样法的基本出发点。 一个元件(或系统)能正常工作的概率称为 元件(或系统)的可靠性 系统由元件组成,常见的元件连接方式: 串联 并联 1 2 2 1 2、系统的可靠性计算问题 例7 设两系统都是由 4 个元件组成,每个元件正常工作的概率为 p , 每个元件是否正常工作相互独立.两系统的连接方式如下图所示,比较两系统的可靠性. A1 A2 B2 B1 S1: A1 A2 B2 B1 例8 S2: 例9 设两系统都是由 4 个元件组成,每个元件的寿命服从平均寿命为θa1, θa2, θb1, θb2的指数分布,每个元件是否正常工作相互独立.两系统的连接方式如下图所示,求两系统寿命大于T=100的概率. A1 A2 B2 B1 S1: A1 A2 B2 B1 例10 S2: function Rguji=litiR3(t,thetaa1,thetaa2,thetab1,thetab2,mm) %t 是要求系统生存的寿命%thetaa1 是元件A1的数学期望%thetaa2 是元件A2的数学期望%thetab1 是元件B1的数学期望 %thetab2 是元件B2的数学期望%mm 是随机实验次数 frq=0;randnuma1 = exprnd(thetaa1,1,mm); randnuma2 = exprnd(thetaa2,1,mm); randnumb1 = exprnd(thetab1,1,mm); randnumb2 = exprnd(thetab2,1,mm); for ii=1:mm if (randnuma1(1,ii)t)(randnuma2(1,ii)t) pass1=1; else pass1=0; end if (randnumb1(1,ii)

文档评论(0)

duoduoyun + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档