用matlab软件解首位数问题.pdfVIP

  1. 1、本文档共6页,可阅读全部内容。
  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文档。上传文档
查看更多

用MATLAB软件解首位数问题

杨亚辉

(海南软件职业技术学院,海南琼海571400)

【内容摘要】首位数问题是一个关于自然数分布特征的著名问题,若用纯数学的方

法求解,则比较困难.本文以MATLAB软件为工具,设计了一个在MATLAB

上可执行的程序,借助MATLAB强大的数值计算能力,巧妙的给出了首

位数问题的近似解.为了减小误差我们在尽可能大的区间上产生尽可

能多的随机自然数,并多次运行求解程序,对数据进行综合处理.最后

得出结论:首位数为k(k=1,2,3,4,5,6,7,8,9)的自然数占全体自然数

的比例依次为0.3596,0.1289,0.0865,0.0809,

0.0774,0.0734,0.0691,0.0644,0.0597.至此,我们对自然数的分布

情况有了一个比较全面的认识.

【关键词】首位数问题;MATLAB;随机数;分布;统计;模拟实验

1.引言

天文学家西蒙·纽科姆(1835-1909)在一次查对数表时,偶然发现了

这样的现象:对数表开始的几页总要比后面几页磨损的厉害.这说明人

们在查对数表时,较多地是使用了以1为首的那几页.于是,纽科姆便产

生了这样一个疑问:首位数是1的自然数在全体自然数中占有多大的比

例?它是不是要比首位数是其它数字的自然数要多?人们后来把这个

问题称为“首位数问题”.

大家可能会认为这个问题是显而易见的.因为除以外,共有个数

09

字:用其中任何一个数字开头的自然数,在全体自然数

1,2,3,4,5,6,7,8,9

中的分布是均匀的.这就是说,首位数为1的自然数应该占全体自然数

的1/9.可是,事实并不这么简单.1974年,美国斯坦福大学统计学家珀

西·迪亚科尼斯已研究了这个问题,运用高等数学的方法,得出合理平

均值,所得到的结论出乎人们的意料:首位数是1的自然数约占全体自

然数的1/3.准确一点说,这个数值应该是lg2约为0.30103.这是怎么一回

事呢?

本文从统计学的角度出发,利用MATLAB强大的数值计算能力对首位

数问题做出了一个比较全面的解答――验证珀西·迪亚科尼斯的结果,

同时计算出其他首位数分别是2,3,4,5,6,7,8,9的自然数在全体自然数中

的分布情况.

2.求解首位数问题的算法和程序

要确定基于首位数的自然数的分布规律,一个可行的办法就是用计

1

算机模拟出尽可能多的随机自然数,然后统计出其中分别以

k(k=1,2,3,4,5,6,7,8,9)为首位数的自然数的个数,从而确定它们各自在

全体自然数中的分布比例.限于计算机系统和MATLAB的性能,在每次模

拟中只产生200万个随机自然数.为了减小误差,重复进行了100次模拟

实验.

求解首位数问题的算法如下:

第一步:初始化,a=0,k=1,2,3,„,9;

第二步:randn()产生常态变异数r;

第三步:将r转换成自然数;

第四步:max()求该组自然数的最大值;

第五步:length()统计该组自然数的个数n;

第六步:判断首位数是否以k开头,是a加1,否则a不变;

第七步:求出首位数为k的自然数占全体自然数的比例p=a/n;

第八步:输出p;

停止

MATLAB工具箱提供了大量功能强大的函数.本文主要用到的MATLAB

函数有(如表1):

文档评论(0)

189****2309 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档