割圆术由我国古代数学家刘徽首创,其为计算圆周率建立了严密的理论和完善的算法,所谓割圆术,就是不断倍增圆内接正多边形的边数求出圆周率的方法。
刘徽指出:“割之弥细,所失弥少,割之又割,以至于不可割,则与圆合体,而无所失矣。”即通过圆内接正多边形细割圆,并使正多边形的周长无限接近圆的周长,进而求得较为精确的圆周率。
首先梳理一下基本思路,下图为割圆术示意图:
不妨设圆为单位圆,弦心距(如OC)为h; 第i次割圆时圆内接正多边形的边长为s(如AB),第i次割圆时圆内接正多边形的边长为s’(如AC),总边数为a,周长为c,根据勾股定理,易求得:
下面我们通过Java来实现此过程:
最终效果如图: