首页 > 代码库 > 5.15求π近似值

5.15求π近似值

”正多边形逼近“法求π:核心思想是极限的思想。假设一个直径d为1的圆,只要求出该圆的周长C,就可以通过π=C/d方法求出π的值。所以关键是求出该圆的周长C。

 

”正多边形逼近“也叫做”割圆术“,当一个圆的内接正多边形边数越多时,其边长就越接近外接的圆周长。

设一个直径为1的圆的内接多边形边长为b,边数为i,周长为C=bi;当多边形的边数加倍后,新多边形边长为x=sqrt(2-2sqrt(1-b*b))/2,新多边形周长为:C=2ix。

#include <iostream>
#include<cmath>
using namespace std;

double getPI(int n) {//n指的是要迭代的次数(迭代次数越多越精确)
	int div,i=4;//div记录迭代次数
	double b=sqrt(2)/2.0;  //直径为1的圆,内接正四边形的初始化,其边长为sqrt(2)/2,边数为4,即i
	double c=0.0;
	for(div=0;div<n;div++) {
		b=sqrt(2.0-2.0*sqrt(1.0-b*b))*0.5;//边数加倍后的边长
		i=i*2;                //边数加倍
	}
	c=b*i;    //计算多边形周长
	return c;
}

int main() {
	int n;
	double PI;
	cin>>n;
	PI=getPI(n);
	cout<<PI;
	return 0;
}

  

 

5.15求π近似值