Stirling逼近.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Stirling逼近

用Stirling逼近近似计算阶乘的探讨与应用 ? 江苏省赣榆高级中学仲晨 myheimu@ 【关键词】:?Stirling逼近,阶乘,极限论,微积分,数学实验,计算机算法 ? “阶乘”(factorial)在信息学竞赛中具有重要角色,更广泛的说,“阶乘”在数学领域也是占有重要地位。在许多人刚刚学习计算机语言的时候,大多会被要求写一个算阶乘的程序,而在学习高精度算法的时候,也会写一个计算较大数字阶乘的程序。不过,在实际的运用之中,可能遇到更大数字的阶乘计算和不同要求的阶乘结果,例如:TOJ(同济大学ACM网络题库,/problem.php)的1016题——“求N!左边第二位的数字”,这就需要一定的精度思考了。 可是我们通常对于较大数字阶乘的要求是求结果位数或前几位数字,这怎么办呢? 在刘汝佳的《算法艺术与信息学竞赛》一书中,(Page241)介绍了Stirling公式: 其中的~符号是指“同阶”或“相当”,即两者随n增加的大致速度相同,在n较大时,两者极其相近。 这是一个极限的概念(现行教材高二下学期数学内容),属于微分学内容,准确写法为: 但遗憾的是在《算法艺术与信息学竞赛》书中只提供了这个算式,并无他物! 本人近日看到一本数学科普读物——《好玩的数学——不可思议的e》(陈任政著,科学出版社),其中5.12节简介了Stirling逼近近似算阶乘,本人感到好奇,于是对这种算法的具体步骤进行了分析,并研究了它的精确度,故为本文。在2005年8月7日完工之日,笔者上网搜索了一下,找到了一些关于Stirling逼近的文章,偶然地在臺灣亞洲聚合公司蔡永裕《談Stirling公式的改良》(刊自台湾《數學傳播》20卷4期,民国85年12月)一文中找到同感,蔡先生的做法于笔者方向不同,作出来的结果比笔者的算法精确一个数量级左右,惭愧,于是,笔者又再次研究,寻找更好算法,写于本文后部。 ? 在1730年,棣莫弗(棣,音Dì)(法国数学家,Abraham De?Moiver,1667~1754)发表的《分析杂论》中首先对n!地一个无穷级数展开式给出了近似公式: 但是,现在我们叫这个式子为“Stirling逼近”,中文叫做“斯特林逼近”,这是为什么呢? 因为棣莫弗的朋友苏格兰数学家斯特林(James Stirling,1696~1770)在同年的《微分法或无穷级数的简述》中也给出了等价的级数。 事实上,棣莫弗首先得到的式子是, 但是,他没有把C求出来。而斯特林则利用棣莫弗的发现做了探讨,求出了。 这些式子的来源是一个无穷级数展开式: 其中B2=1/6,B4=-1/30,B6=1/42 …?B2k是雅格布·伯努力数。(具体内容请参见后文介绍) ? 这里介绍一下,还没上高中的同学还没有学到,“乘方”的逆运算有两种:开方和对数。 对于一个幂:,其中a成为底数,n成为指数,b成为幂。已知a和n求b,就是乘方运算;已知b和n,求a,就是开方运算;而已知a和b求n,就是对数运算,写做:,这里n就称为以a为底b的对数(logarithm)。 当底数为10的时候,叫做常用底数,简写做?e的时候,叫做自然对数,简写做?。;当底数为 至于e的含义:e是重要性仅次于π的数,是极限论的主要内容,具体的说,即: 意思是当n趋向于正的无限大的时候,趋向于e 。 e是无理数,即无限不循环小数,也是超越数,即不能满足某个整数系数代数方程的数(不能满足某个整数系数代数方程的数叫做代数数)。 目前e只算到了几千位。 e=2.718281828459045235360287471352662497757247093... 特别说明的是,在Pascal语言中,exp(n)函数就是e的n次方。 ? 另外,有个著名的公式被成为“整个数学中最卓越的公式”: 其中的i为虚数的单位,。来自算术的0、1,来自代数的i,来自几何的π,来自分析学的e,奇妙的组成了一个公式! 这是欧拉(瑞士数学家,Leonhard?Euler,1707~1783)发现的!所以称作“欧拉公式”。 不过,真正的欧拉公式是: 那个“最卓越的公式”只是欧拉公式的一个推倒公式。 ? 言归正传,由公式 两边同时取e的幂,得 即: 再经过近似等处理(这些处理比较麻烦,而且牵扯到微积分内容),我们得到了Stirling公式: 注:在本文后部有Stirling公式的推倒过程。 当然,我们可以得到它得更具体形式: 其中的θ是不定的,在(0,1)区间之内。 ? 讲到这里,我们有了公式,可以开始计算了。 但是,我们计算什么呢?难道我们要计算N!的值吗? 虽然这个式子比阶乘原始计算式简单,但是实际计算的时候仍然得到的将是上百上千位的数字,而且这个式子毕竟是近似公式,无法真正得到确切得数! 难道我们辛苦的到的式子无用了吗? 答案当然是否定的!

文档评论(0)

haocen + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档