python求pi的方法


Posted in Python onOctober 08, 2014

本文实例讲述了python求pi的方法,是一篇翻译自国外网站的文章,分享给大家供大家参考。

具体实现方法如下:

#_*_ coding=utf-8 *_*
## {{{ http://code.activestate.com/recipes/578130/ (r5)
def pi(places=10):
  """Computes pi to given number of decimal places
    参数places表示要返回的pi的小数点后位数  
    方法:先整体扩大10**8(10的八次方)倍,然后计算完成后再缩小10的八次方倍
  """
  
  # 3 + 3*(1/24) + 3*(1/24)*(9/80) + 3*(1/24)*(9/80)*(25/168)
  # The numerators 1, 9, 25, ... are given by (2x + 1) ^ 2
  # The denominators 24, 80, 168 are given by (16x^2 -24x + 8)
  extra = 8
  one = 10 ** (places+extra)
  t, c, n, na, d, da = 3*one, 3*one, 1, 0, 0, 24
  #这里的n 和d 分别为每一项的分子与分母 ,na 和 da 分别为分子和分分母后一项比前一项增加的数值
  #这里的//可不是C++中的注释,而是除的意思
  while t > 1: 
    n, na, d, da = n+na, na+8, d+da, da+32
    t = t * n // d
    c += t
  return c // (10 ** extra)

def picirc(radius, aspect_ratio=5):
  """Display the digit of pi in a circle of given radius
    radius:显示的半径
    aspect_ratio:调节显示的比率参数
  """
  #display_width为各行的显示长度
  display_width = int(radius * aspect_ratio + 10)
  pi_str = repr(pi(int(2 * radius ** 2 * aspect_ratio)))
  pos = 0
  #cols为每一行中要显示的数字个数
  for i in range(2 * radius):
    cols = int(0.5 + aspect_ratio * (radius**2 - (radius-(i+0.5))**2) ** 0.5)
    print(pi_str[pos:pos+cols].center(display_width)) #将产生的pi数值生成的文本列表中相应的位数取出来显示在当前行
    pos += cols

if __name__ == '__main__':
  
  picirc(16)
## end of http://code.activestate.com/recipes/578130/ }}}

显示的结果为:

31415926535897932384                  
              6264338327950288419716939937510582              
            0974944592307816406286208998628034825342117            
          06798214808651328230664709384460955058223172535940          
         81284811174502841027019385211055596446229489549303819644         
        288109756659334461284756482337867831652712019091456485669234        
       6034861045432664821339360726024914127372458700660631558817488152       
      09209628292540917153643678925903600113305305488204665213841469519415      
     11609433057270365759591953092186117381932611793105118548074462379962749     
    5673518857527248912279381830119491298336733624406566430860213949463952247     
    371907021798609437027705392171762931767523846748184676694051320005681271452    
   63560827785771342757789609173637178721468440901224953430146549585371050792279    
   689258923542019956112129021960864034418159813629774771309960518707211349999998   
   3729780499510597317328160963185950244594553469083026425223082533446850352619311   
   88171010003137838752886587533208381420617177669147303598253490428755468731159562   
   86388235378759375195778185778053217122680661300192787661119590921642019893809525   
   72010654858632788659361533818279682303019520353018529689957736225994138912497217   
   75283479131515574857242454150695950829533116861727855889075098381754637464939319   
   2550604009277016711390098488240128583616035637076601047101819429555961989467678   
   374494482553797747268471040475346462080466842590694912933136770289891521047521   
   62056966024058038150193511253382430035587640247496473263914199272604269922796    
    782354781636009341721641219924586315030286182974555706749838505494588586926    
    9956909272107975093029553211653449872027559602364806654991198818347977535     
     66369807426542527862551818417574672890977772793800081647060016145249192     
      17321721477235014144197356854816136115735255213347574184946843852332      
       3907394143334547762416862518983569485562099219222184272550254256       
        887671790494601653466804988627232791786085784383827967976681        
         45410095388378636095068006422512520511739298489608412848         
          86269456042419652850222106611863067442786220391949          
            4504712371378696095636437191728746776465757            
              3962413890865832645995813390478027              
                  59009946576407895126

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
解决Python中由于logging模块误用导致的内存泄露
Apr 23 Python
深入解析Python中的WSGI接口
May 11 Python
Python 安装setuptools和pip工具操作方法(必看)
May 22 Python
python matlibplot绘制多条曲线图
Feb 19 Python
numpy添加新的维度:newaxis的方法
Aug 02 Python
python递归全排列实现方法
Aug 18 Python
python标记语句块使用方法总结
Aug 05 Python
详解python中__name__的意义以及作用
Aug 07 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
Aug 20 Python
浅谈Pycharm最有必要改的几个默认设置项
Feb 14 Python
keras自定义回调函数查看训练的loss和accuracy方式
May 23 Python
python 自动化偷懒的四个实用操作
Apr 11 Python
python实现简单的TCP代理服务器
Oct 08 #Python
python操作CouchDB的方法
Oct 08 #Python
python基于queue和threading实现多线程下载实例
Oct 08 #Python
python实现封装得到virustotal扫描结果
Oct 05 #Python
python解析xml文件操作实例
Oct 05 #Python
python写xml文件的操作实例
Oct 05 #Python
python实现上传样本到virustotal并查询扫描信息的方法
Oct 05 #Python
You might like
PHP 调试工具Debug Tools
2011/04/30 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
jQuery插件ajaxFileUpload使用详解
2017/01/10 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
微信小程序实现跑马灯效果
2020/10/21 Javascript
element-ui 时间选择器限制范围的实现(随动)
2019/01/09 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
vue实现配置全局访问路径头(axios)
2019/11/01 Javascript
vue中实现图片压缩 file文件的方法
2020/05/28 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
Python随机生成身份证号码及校验功能
2018/12/04 Python
python读取txt文件中特定位置字符的方法
2018/12/24 Python
Python实现京东秒杀功能代码
2019/05/16 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
办公室主任主任岗位责任制
2014/02/11 职场文书
五好家庭事迹材料
2014/12/20 职场文书
社区安全温馨提示语
2015/07/14 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
浅谈node.js中间件有哪些类型
2021/04/29 Javascript