78.求π的近似值
請利用“正多邊形逼近”的方法求出π的近似值
*問題分析與算法設(shè)計
利用“正多邊形逼近”的方法求出π值在很早以前就存在,我們的先人祖沖之就是用這種方法在世界上第一個得到精確度達(dá)小數(shù)點后第6位的π值的。
利用圓內(nèi)接正六邊形邊長等于半徑的特點將邊數(shù)翻番,作出正十二邊形,求出邊長,重復(fù)這一過程,就可獲得所需精度的π的近似值。
假設(shè)單位圓內(nèi)接多邊形的邊長為2b,邊數(shù)為i,則邊數(shù)加倍后新的正多邊形的邊長為:
周長為:
y=2 * i * x i:為加倍前的正多邊形的邊數(shù)
*程序與程序注釋
#include
#include
void main()
{
double e=0.1,b=0.5,c,d;
long int i; /*i: 正多邊形邊數(shù)*/
for(i=6;;i*=2) /*正多邊形邊數(shù)加倍*/
{
d=1.0-sqrt(1.0-b*b); /*計算圓內(nèi)接正多邊形的邊長*/
b=0.5*sqrt(b*b+d*d);
if(2*i*b-i*e<1e-15) break; /*精度達(dá)1e-15則停止計算*/
e=b; /*保存本次正多邊形的邊長作為下一次精度控制的依據(jù)*/
}
printf("pai=%.15lf\n",2*i*b); /*輸出π值和正多邊形的邊數(shù)*/
printf("The number of edges of required polygon:%ld\n",i);
}
*運行結(jié)果
pai=3.141592653589794
The number of edges of required polygon:100663296
*思考題
請用外切正多邊形逼近的方法求π的近似值。
請利用“正多邊形逼近”的方法求出π的近似值
*問題分析與算法設(shè)計
利用“正多邊形逼近”的方法求出π值在很早以前就存在,我們的先人祖沖之就是用這種方法在世界上第一個得到精確度達(dá)小數(shù)點后第6位的π值的。
利用圓內(nèi)接正六邊形邊長等于半徑的特點將邊數(shù)翻番,作出正十二邊形,求出邊長,重復(fù)這一過程,就可獲得所需精度的π的近似值。
假設(shè)單位圓內(nèi)接多邊形的邊長為2b,邊數(shù)為i,則邊數(shù)加倍后新的正多邊形的邊長為:
周長為:
y=2 * i * x i:為加倍前的正多邊形的邊數(shù)
*程序與程序注釋
#include
#include
void main()
{
double e=0.1,b=0.5,c,d;
long int i; /*i: 正多邊形邊數(shù)*/
for(i=6;;i*=2) /*正多邊形邊數(shù)加倍*/
{
d=1.0-sqrt(1.0-b*b); /*計算圓內(nèi)接正多邊形的邊長*/
b=0.5*sqrt(b*b+d*d);
if(2*i*b-i*e<1e-15) break; /*精度達(dá)1e-15則停止計算*/
e=b; /*保存本次正多邊形的邊長作為下一次精度控制的依據(jù)*/
}
printf("pai=%.15lf\n",2*i*b); /*輸出π值和正多邊形的邊數(shù)*/
printf("The number of edges of required polygon:%ld\n",i);
}
*運行結(jié)果
pai=3.141592653589794
The number of edges of required polygon:100663296
*思考題
請用外切正多邊形逼近的方法求π的近似值。

