
最近在写毕业论文,稍待要用到些统计计算的知识。于是重新捡了捡以前学过的些关于统计计算的相关资料,似乎有些常读常新之感,于是就着以前的笔记,沥出一些脉络。一来方便自己理清思路,二来纯粹打发无聊时间。姑妄言之,姑妄听之……
为啥要尝试统计模拟?大的方面没有心思谈。自行脑补中学政治老师的高谈阔论即可。我觉得从圆周率的角度窥探一二就十分有趣。众所周知\(\pi\)是一个非常有用的东西。不然先秦时代,这货就不会已经出现了。所谓的“周三径一”,就是说的它,即圆周长与直径的比率为三比一。圆的周长除以圆的直径是一个定值。发现这个规律太碉了,比如“造轮子”就有谱了!但是精确计算是一个很严重的问题,不然只能是椭轮子。所以,古时候的人们花了很多时间和功耗去解决它的精度。比如张衡用圆与外切的正方形近似得到了好一些的结果,起码不再是3,精确到了小数位上。而刘徽的“割圆术”是重大的突破,这次是用圆的内切正多边形去逼近。后来祖冲之站在这个巨人的肩膀上,算出了3.1415926。这下才算基本完结,因为大体上用这个值可以完虐所有那个时候涉及到\(\pi\)的工农业生产了。但是,这里面很显然有一个成本问题,如果按照刘徽的方法,精确到3.1415926最多要算到16384边形的面积,这个计算复杂度,我觉得看看就好(当然我说的是不借助现代计算工具);而且容错性也有待考量,稍微在多边形面积上出了错误,也会对\(\pi\)的精确值产生较大的影响。
而用概率的思想,换一个角度,去算\(\pi\)(当然同样也是用手工算,只是变换思维方式),就会有很高的效率。当然,这些都要感谢现代数学的进步。其中有代表性的就是现在小学课本上都会出现的Buffon’s Needle。这个方法很牛。不妨考虑这样一个问题,在一个A4纸上画了很多间距为5厘米的平行直线,我取一个4厘米长的绣花针,随便扔,那么请问针碰到平行线的概率是多少?很简单嘛,我直接拿一张A4纸,画好平行线, 拿出一根针,随便扔个2000次再说。碰到线计为1,没碰到计为0,碰到的除以总的次数,不就是概率么。然并卵,那这个概率有啥用?吊诡的就在这里,Buffon 大神算出,这个概率等于2倍的针长除以PI和间距的乘积。假设概率为\(p\), 针长为\(L\), 平行线之间的间距为\(D\),那么
$$p = \frac{2L}{\pi D}$$
这下发了,只要我的概率能够搞定概率,而且足够精确,那么\(\pi\)的精确值不就易如反掌么。而稍微麻烦一点的地方,不就是多扔几次针么,而且容错性也要好,把碰到线计为没有碰到的出错的概率不高,耐心一点就行,而对\(\pi\)值的估计的影响也不大。(当然针对这个实验,还有更多的提高效率的方法, 这个暂且不谈)那么,这里从引进概率的角度来计算\(\pi\),不得不令人拍案叫绝。
当然,对于这样一种方法,还有一个貌似高大上的统称,蒙特卡洛 (Monte Carlo) 方法。他们总的来说都是通过求概率这一途径来估计我们所需要的量,反正我暂且是这么理解的。
当然,废话这么说,这里只是通过一个简单的角度来说明统计模拟(Statistical Simutation)的奇妙之处。
那么问题来了,如何通过计算机运用Buffon’s Needle去估计\(\pi\),从而实现统计模拟,而不是真的去扔针呢?且待下回分解。
<del datetime="2016-07-18T02:05:41+00:00">