3世纪中期,魏晋时期的数学家刘徽首创割圆术
利用对圆形的无线分割,使计算结果更接近π
方法1(double低精度)
-
在圆形中做一个正六边形,此六边形的每个定点都在圆上。正六边形中心和圆心重合。正六边形可以看作是是六个正三角形的组合。
因此,我们可以得到第一个公式 :
-
如下图所示
根据平方差公式可得:
所以
得到递归函数公式:
我们可以设 半径 r = 1,如此则有:
代码如下:
public void play3() { System.out.println("输入n的值,将正六边形分割n次: "); //命令行输入操作 @SuppressWarnings("resource") int n = new Scanner(System.in).nextInt(); //开始执行算法 double An = 1;//起始时时正六边形,每条边长度a=1 for(int i=0;i<=n;i++) { System.out.println("为正 " + 6*Math.pow(2, i) + "边形, "+ "n = " + i); double Pi = 3*Math.pow(2, i)*An;//求圆周率的近似值 System.out.println("π ≈ " + Pi); System.out.println(); An = Math.sqrt(2 - Math.sqrt(4 - Math.pow(An, 2)));//求正多边形有几条边 } }
运行结果: