计算机在材料科学与工程中的应用ch蒙特卡罗方法.pptVIP

计算机在材料科学与工程中的应用ch蒙特卡罗方法.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 蒙特卡洛方法 第一节 掷针实验(蒲丰实验) 一些人进行了实验,其结果列于下表 : 设针投到地面上的位置可以用一组参数(x,θ)来描述,x为针中心的坐标,θ为针与平行线的夹角,如图所示。 第二节 [0,1]区间均匀分布的随机数 随机数表 为了产生随机数,可以使用随机数表。随机数表是由0,1,…,9十个数字组成,每个数字以0.1的等概率出现,数字之间相互独立。这些数字序列叫作随机数字序列。如果要得到n位有效数字的随机数,只需将表中每n个相邻的随机数字合并在一起,且在最高位的前边加上小数点即可。例如,某随机数表的第一行数字为7634258910…,要想得到三位有效数字的随机数依次为0.763,0.425,0.891。 因为随机数表需在计算机中占有很大内存,而且也难以满足蒙特卡罗方法对随机数需要量非常大的要求,因此,该方法不适于在计算机上使用。 物理方法产生随机数 用物理方法产生随机数的基本原理是:利用某些物理现象,在计算机上增加些特殊设备,可以在计算机上直接产生随机数。这些特殊设备称为随机数发生器。用来作为随机数发生器的物理源主要有两种:一种是根据放射性物质的放射性,另一种是利用计算机的固有噪声。 用物理方法产生的随机数序列无法重复实现,不能进行程序复算,给验证结果带来很大困难。而且,需要增加随机数发生器和电路联系等附加设备,费用昂贵。因此,该方法也不适合在计算机上使用。 * * 蒙特卡罗方法又称统计模拟(Statistical Simulation)方法,它用随机数对问题的概率模型进行数值模拟从而获得问题的解。 Nicholas Metropolis (1915-1999) Monte-Carlo, Monaco 是由Metropolis在二次世界大战期间提出的:Manhattan计划,研究与原子弹有关的中子输运过程; Monte Carlo是摩纳哥(monaco)的首都,该城以赌博闻名 亦称统计模拟方法,statistical simulation method ?利用随机数进行数值模拟的方法 为了求得圆周率π值,在十九世纪后期,有很多人作了这样的试验:将长为2l的一根针任意投到地面上,用针与一组相间距离为2a( l<a)的平行线相交的频率代替概率P,再利用准确的关系式: 求出π值 其中N为投计次数,n为针与平行线相交次数。这就是古典概率论中著名的蒲丰问题。 实验者 年份 投计次数 π的实验值 沃尔弗(Wolf) 1850 5000 3.1596 斯密思(Smith) 1855 3204 3.1553 福克斯(Fox) 1894 1120 3.1419 拉查里尼(Lazzarini) 1901 3408 3.1415929 针在平行线间的位置 任意投针,就是意味着x与θ都是任意取的,但x的范围限于[0,a],夹角θ的范围限于[0,π]。在此情况下,针与平行线相交的数学条件是x ≤ l · sinθ 则投针N次,相交次数为n,则相交的概率为: 说明: 1,用随机方法可以解决一些比较难于用确定性方法解决的问题。 2,随机方法要达到一定的精度,所耗时间较长。 3,用随机方法计算,一个关键的问题是随机数的取得。 是蒙特卡罗方法研究的一个重要内容。如果得到[0,1]区间均匀分布的随机数,则任何区间[a,b]之内的随机数都可以得到: 随机数的要求: 1,足够多个随机数能遍布[0,1]范围,非周期性,遍历性。 2,在[0,1]中每个小区间出现的机会相等,等概率性。 并不是一个简单的问题。stdlib.h里面的random()函数可以在低精度的情况下使用。 在计算机上产生随机数最实用、最常见的方法是数学方法,即用如下递推公式: 伪随机数 经常使用的是k=1的情况,其递推公式为: 用数学方法产生的随机数,存在两个问题: 1, 递推公式和初始值确定后,整个随机数序列便被唯一确定。不满足随机数相互独立的要求。 2, 由于随机数序列是由递推公式确定的,而在计算机上所能表示的[0,1]上的数又是有限的,因此,这种方法产生的随机数序列就不可能不出现无限重复。对于k=1的情况,只要有一个随机数重复,其后面的随机数全部重复,这与随机数的要求是不相符的。 由于这两个问题的存在,常称用数学方法产生的随机数为伪随机数。 利用计算机产生随机数的方法: 1, 乘方取中法: 设x0为一个4s位数。把x02截头去尾,只保留中间2s位,作为数列的下一个数x1。 对于十进制: ——MOD是求余数运算。则[0,1]区间的随机数为: 缺点:a,周期较短,b,所得序列有向小端偏移的倾向。 2, 乘同余法 对于xi-1,乘积λxi-1除以M后余数为xi

文档评论(0)

天马行空 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档