从祖冲之到现在,圆周率的发展越来越丰富,求法也是越来越快其中:
1.求圆周率的方法:
(1)蒙特卡罗法
这是基于“随机数”的算法,通过计算落在单位圆内的点与正方形内的比值来求圆周率PI。
如果一共投入N个点,其中有M个落入圆中,则要点均匀,假定圆周率的半径为R,则:
(2)欧拉恒等式公式为:
基础的泰勒级数:
(2)求python进度表
代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 18-5-21 下午3:44
# @Author : LK
# @File : 进度条.py
# @Software: PyCharm
import sys
import time
def process_bar(precent, width=50):
use_num = int(precent*width)
space_num = int(width-use_num)
precent = precent*100
# 第一个和最后一个一样梯形显示, 中间两个正确,但是在python2中报错
#
# print('[%s%s]%d%%'%(use_num*'#', space_num*' ',precent))
# print('[%s%s]%d%%'%(use_num*'#', space_num*' ',precent), end='\r')
print('[%s%s]%d%%'%(use_num*'#', space_num*' ',precent),file=sys.stdout,flush=True, end='\r')
# print('[%s%s]%d%%'%(use_num*'#', space_num*' ',precent),file=sys.stdout,flush=True)
if __name__ == '__main__':
for i in range(21):
precent = i/20
process_bar(precent)
time.sleep(0.2)
print('\n')
显示如下:
t
(3)利用进度条显示求圆周率
代码如下:
import math
import time
scale=10
print("执行开始")
t=time.process_time()
for i in range(scale+1):
a,b='**'*i,'..'*(scale-i)
c=(i/scale)*100
π=4*(4*math.atan(1/5)-math.atan(1/239))
print("%{:3}[{}->{}]".format(a,b,c))
time.sleep(0.1)
print(π)
print("{:.2f}s".format(t))
print("执行结束")
运行结果如下:
现在,到此结束.................