标签:logs ios strong mat stream names return out name
”正多边形逼近“法求π:核心思想是极限的思想。假设一个直径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;
}
标签:logs ios strong mat stream names return out name
原文地址:http://www.cnblogs.com/dd2hm/p/6785224.html