803
需用时 01:36
PI搜查令

(文/雷特•阿兰)你觉得pi够酷吗?我一定是患了相思病,无法停止对pi的想念。之前分析pi的最佳表示时有两个计算问题。在Python程序中只使用pi小数点后的16位数字,这足够了吗?当然不。计算pi时永远没有完美的数值。另一个问题是在除法计算中也是用16位小数。所以,我们如何把这些数字放大呢?我知道很多方法,现在给大家介绍其中一种。

向Python十进制模块问好吧。我本来尝试把所有步骤列成表,但是问题却变得非常复杂。为什么要把简单的事情复杂化呢?基本上,10进制模块会帮助你定义计算程序中的数值位数。

通过新程序发现我得到了与之前相同的分数表示。计算出的最佳值是355/113。它小数点后第七位和pi不同。我还留有很多余地,远没有接近Python常规数字表示方法的极限。

接下来是超大数计算时间。程序一直进行,我也不确定能否得到更好的结果。直到计算52163/16604时我才找到比355/113更合适的分数。它也只比355/113略好而已。我写出了两个分数的前几位小数结果。

http://guokr.com/gkimage/61/wa/hs/61wahs.png

两者非常接近。奇怪的是为什么两个数之间有巨大的空白。你可以把它叫做pi空白。也许这个空白中生活着一只pi怪兽,把所有好的pi分数表示都吃掉了。

如果继续寻找更好的pi值,会发现很多。这是其中的一些:

  • 52163/16604
  • 52518/16717
  • 52873/16830
  • 53228/16943
  • 53583/17056
  • 53938/17169

我找到的最佳分数是312689 / 99532。

另一件奇怪的事是G(重力加速度)的平方根与pi很接近(单位是N/kg)。

http://guokr.com/gkimage/8f/3s/94/8f3s94.png

关于e(欧拉数)

接下来,e站在了聚光灯下,它和pi一样酷,但是却得不到关注。我个人认为是名字惹得祸。你不能指望人们明白你说的“e”就是那个欧拉数。

既然e也是无理数,那么它的最佳分数表示是什么呢?实际上,我只需把程序里pi的值换成e再运行一次就行了。

e的最佳分数表示是566827 / 208524(我运行到了分子+分母=100000)。

我为什么这么做(除了对pi的痴迷)?为什么不搜索文献,找到前人的成果呢?那么,为什么人们要制造自己的独木舟呢?当然,你不花时间就可以买到更好的。但得到最好的独木舟并不是问题的关键,最重要的是过程。我跑步的道理也是一样。为什么不开车却要跑步呢?因为这是人类的本能,我想做一个真正的人类。

原文看这里

科技名博微博

博主介绍: Rhett Allain是Southeastern Louisiana University物理系的副教授,他经常在自己的工作中自得其乐,非常享受这个讲授的过程。博客中亦是如此,Rhett常会用诙谐的例子来说明一个大家关心的物理问题,或是用物理解释一个大家感兴趣的知识点。无论神马状况,他的博客都欢乐无比。

The End

发布于2011-03-30, 本文版权属于果壳网(guokr.com),禁止转载。如有需要,请联系果壳

我的评论

摇滚驴

电气工程及自动化博士

pic