普通物理建模:5蒙特卡罗方法.pptVIP

  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文档。上传文档
查看更多
普通物理建模 * 蒙特卡罗方法 (Monte Carlo Methods ) Monte-Carlo, Monaco Monte Carlo Monte Carlo Casino 冯.诺依曼(Von Neumann) 蒙特卡罗方法是数理统计和电子计算机相结合的产物。二战期间,由于科学技术的发展和电子计算机的发明,蒙特卡罗方法作为一种独立的方法被提出来,并且在核武器的研制中首先得到了应用(Manhattan计划,研究与原子弹有关的中子链式反应) Stanislaw Ulam (1909-1984) ? 基本思想 为了求解数学,物理,工程技术等方面的问题,首先建立一个概率模型或随机过程,使它的参数等于问题的解,然后通过对模型过程的观察或随机试验,来计算所求参数的统计特征,然后给出所求解的近似值。这就是蒙特卡罗方法的基本思想。 1) 2) 3) ? Monte Carlo 方法处理的两类问题 确定性问题 随机性问题 基本思想 解题步骤: ? 特点 蒙特卡罗方法本身最独特之处是用数学方法在电子计算机上实现数字模拟实验。 Monte Carlo方法与数值解法的不同: Monte Carlo方法:利用随机试验的方法来求解物理问题; 数值解法:从一个物理系统的数学模型出发,通过求解一系列的微分方程来得到系统的未知状态。 Monte Carlo 方法是一种思想方法。 灵活多变 应用非常广泛 什么是随机数? 单个的数字不是随机数 是指一个数列,其中的每一个数称为随机数,其值与数列中的其它数无关; 在一个均匀分布的随机数列中,每一个数出现的概率是均等的; 例如:在[0,1]区间上均匀分布的随机数序列中,0.00001与0.5出现的机会均等 伪随机数 用数学方法在计算机上产生随机数。 实际上不具有随机性,存在一定的周期。 ?缺点: 不满足随机数之间相互独立的要求:公式和初值确定后,序列就唯一地确定了; 不满足均匀性:计算机能表示的[0,1]区间内的数是有限的(由字长确定),递推到一定次数后,出现周期性的重复现象 ?优点: 占用计算机的内存少; 产生速度快; 可以重复前次的模拟结果,便于程序的找错; The constant RAND_MAX is the maximum value that can be returned by the rand function. RAND_MAX is defined as the value 0×7fff. The rand function returns a pseudorandom integer in the range 0 to RAND_MAX. Use the srand function to seed the pseudorandom-number generator before calling rand. MSDN C语言中的伪随机数发生器 void srand( unsigned int seed ); int rand( void ) #include stdlib.h #include stdio.h #include time.h void main( void ) { int i; srand( (unsigned)time( NULL ) ); /* Seed the random-number generator with current time so that the numbers will be different every time we run.*/ for( i = 0; i 10;i++ ) printf( %6d\n, rand() ); /* Display 10 numbers. */ } Output 6929 8026 21987 30734 20587 6699 22034 25051 7988 10104 随机函数要求 输入输出 时间 最简单最基本的随机数就是[0,1]区间上均匀分布的随机数 [0,1]区间上均匀分布的随机数是Monte Carlo方法的基础,服从任意分布的随机数序列可以用[0,1]区间均匀分布的随机数序列作适当的变换舍选后求得。 1.0*rand()/32767 1.0*rand()/ RAND_MAX 线性同余发生器 递推公式 I0:初始值(种子seed) a:乘因子(multiplier) c:加常数(additive constant) m:模数(modulus) mod:取余运算:(aIn+c)除以m后的余数 a,c

文档评论(0)

学习让人进步 + 关注
实名认证
文档贡献者

活到老,学到老!知识无价!

1亿VIP精品文档

相关文档