标题 | 用Python实现割圆术算法 |
范文 | 刁乾坤 【摘要】 圆周率是人类获得的最古老的数学概念之一.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. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。