近似算法:求Π的近似值(迭代法)

问题:请用正多边形逼近法求Π的近似值。

算法:圆的周长 = 正多边形的边长 * 边数。设圆的半径为1,则2Π = i * x 。其中 i 为正多边形边数,x 为边长。

因为圆的半径 = 内接于此圆的正六边形的边长,故从六边形开始计算。参数 e 表示精度要求。b表示正多边形边数翻番之前边长的一半。

double Pi(double e){
	int i = 6;
	double b,x = 1;			//正六边形边长为1
	do{
		b = x/2;
		i *= 2;				//边数翻番
		x = sqrt(2-2*sqrt(1.0-b*b));	//计算翻番后的边长
	}while(i*x-i*b>e);		//精度达到要求则停止计算
	cout<<"圆的内接多边形边数为:"<<i<<endl;
	return (i*x)/2;			//返回Π的近似值
}

测试:

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值