刁乾坤
【摘要】 圆周率是人类获得的最古老的数学概念之一.3世纪中期,魏晋时期的数学家刘徽[1]首创割圆术,为计算圆周率建立了严密的理论和完善的算法,所谓割圆术,就是不断倍增圆内接正多边形的边数求出圆周率的方法.本文将通过Python语言,在JUPYTER NOTEBOOK中实现割圆术算法.
【关键词】 圆周率;割圆术;算法
主要仪器设备JUPYTER NOTEBOOK PYTHON 3.
设半径为1的圆的边数为6·2n的内接正多边形边长为an,如图所示,其中,AC= an 2 ,AD=a2n,OD=1,OC= 1- an 2 2 ,AD2=AC2+CD2=AC2+(OD-OC)2,
则a2n= an 2 2+ 1- 1- an 2 2 2 = 2- 4-a2n .
相应的△AOD面积为:Sn+1= 1 2 OD·AC.
所以,π≈6·2n+1·Sn+1,
程序代码
import numpy as np
def liuhui(n):
a=np.zeros(n+2)
a[0]=1
for k in range(n+1):
a[k+1]=np.sqrt(2-np.sqrt(4-a[k]**2))
return(print(′圓的内接正6*2^n边形的边长为:′,a[n]),print(′圆周率的近似值为:′,3*2**n*a[n]))
Python中π的参考值为3.141592653589793.
运算结果为:
n 正多边形边长 正多边形边数 圆周率近似值
0 1.0 6 3.0
1 0.517638090205 12 3.10582854123
2 0.26105238444 24 3.13262861328
3 0.13080625846 48 3.13935020305
4(刘徽) 0.0654381656436 96 3.14103195089
5 0.032723463253 192 3.14145247229
6 0.0163622792079 384 3.14155760791
7 0.00818120805247 768 3.14158389215
8 0.00409061258234 1536 3.14159046324
9 0.00204530736071 3072 3.14159210604
10 0.00102265381399 6144 3.14159251659
11(祖冲之) 0.000511326923607 12288 3.14159261864
12 0.000255663463975 24576 3.14159264532
13 0.000127831731987 49152 3.14159264532
结果分析:刘徽利用正96边形算得圆周率小数点后3位精确数字;祖冲之利用正12288边形算得圆周率小数点后7位精确数字.在数学上,祖冲之推算出圆周率的真值应该介于3.1415926和3.1415927之间,比欧洲要早一千多年.
【参考文献】
[1]郭书春.中国古代数学[M].北京:商务印书馆,1997:164.