Java算法:计算π(圆周率)

3世纪中期,魏晋时期的数学家刘徽首创割圆术
利用对圆形的无线分割,使计算结果更接近π

方法1(double低精度)

  1. 在圆形中做一个正六边形,此六边形的每个定点都在圆上。正六边形中心和圆心重合。正六边形可以看作是是六个正三角形的组合。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    因此,我们可以得到第一个公式
    在这里插入图片描述

  2. 如下图所示
    在这里插入图片描述
    在这里插入图片描述
    根据平方差公式可得:
    在这里插入图片描述
    所以
    在这里插入图片描述
    得到递归函数公式
    在这里插入图片描述
    我们可以设 半径 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)));//求正多边形有几条边
    	}
    }
    

    运行结果:
    在这里插入图片描述
    在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值