pai(10000)_b,pai(10000)_c系列的基本演算法與評價
pai(10000)_b (euler's fomula)
參考書目: 計算機程式設計經典題解/楊克昌.——北京:清華大學出版社,2007.12
公式原理: pai/2 = 1 + 1/(1*3) + (1*2)/(1*3*5) + (1*2*3)/(1*3*5*7) + …… +(n!)/(1*3*5*……*(2*n+1))
= 1 + (1/3)(1 + (2/5)(1 + …… +((n-1)/(2*n-1))(1 + (n/(2*n+1)))……))
誤差分析: 第n項後rnpai(10000)_c (machin's fomula)
參考書目: 程式演算法與技巧精選/郭繼展,郭勇,蘇輝.——北京:機械工業出版社,2008.4
公式及原理: arctg(x)=x-(x^3)/3+(x^5)/5-(x^7)/7+……
pai=16*arctg(1/5)-4*arctg(1/239)
(5*5=25,239*239=57121)
……pai=(80/25-965/57121)-(1/3)(80/(25^2)-965/(57121^2))+(1/5)(80/(25^3)-965/(57121^3))-(1/7)(80/(25^4)-965/(57121^4))+……
誤差分析: 執行至最後i=14317
abs(e1)=(1/14317)(80/(25^7159)-965/(57121^7159))<(1/14317)(956/(25^7159))<10^(-10008)
abs(e2)=7158*(10^(-10005))<10^(-10001)
無限位計算: 4位數存乙個int。
評價: 好,收斂很快。我編制輸出10000位的程式,我只多計算了5位,就得到正確結果。
付**:
void main()
for(i=0;i<=x+5;i++)
for(c=1,j=n;j>=1;j--)
a[x+5]=c/d;
for(b=0,i=x+5;i>=0;i--)
a[0]++;
c=a[0];
}for(b=0,i=x+5;i>=0;i--)
printf("pai=%d./n",a[0]);
for(l=0,i=1;i<=x;i++)
scanf("%*c%*c");
}void main(),b[2002]=,c[2002]=,r=100000,sa,sb,sc,d,g;
long w=2001,m=0,q=-1,k=0,i=1,n,j,digit[5],oo;
file *fp;
b[1]=8000000,c[1]=95600000;
fp=fopen("pai_10000.dat","w");
t1: q=-q;sa=sb=sc=0;
t2: if(m>w)
goto t3;
if(c[m]==0)
for(j=m;j<=w;j++)
t3: if(k>w)
goto t4;
if(b[k]==0)
for(j=k;j<=w;j++)
i+=2;
goto t1;
t4: n=0;
for(j=w;j>=1;j--)
else
}printf("pai=%ld./n",n);
fprintf(fp,"pai=%d./n",n);
for(j=1;j=0;oo--)
for(oo=0;oo<5;oo++)
if(j%10==0)
else if(j%2==0)
}fclose(fp);
scanf("%*c");
}
7 15 計算圓周率
7 15 計算圓周率 15 分 根據下面關係式,求圓周率的值,直到最後一項的值小於給定閾值。2 1 1 3 2 3 5 3 3 5 7 n 3 5 7 2 n 1 輸入格式 輸入在一行中給出小於1的閾值。輸出格式 在一行中輸出滿足閾值條件的近似圓周率,輸出到小數點後6位。輸入樣例 0.01 輸出樣例...
7 15 計算圓周率
學到翁愷老師 c語言程式設計 第八周了,來pta做點習題練習 題目是 用圓周率的關係式,求圓周率的值,直到最後一項的值小於給定閾值。2 1 3 1 3 5 2 3 5 7 3 3 5 7 2n 1 n 輸入格式 輸入在一行中給出小於1的閾值。輸出格式 在一行中輸出滿足閾值條件的近似圓周率,輸出到小數...
《計算圓周率》python
題目 歷史上有許多計算圓周率pai的公式,其中,格雷戈里和萊布尼茨發現了下面的公式 pai 4 1 1 3 1 5 1 7 這個公式簡單而優美,但美中不足,它收斂的太慢了。如果我們四捨五入保留它的兩位小數,那麼 累積1項是 4.00 累積2項是 2.67 累積3項是 3.47 請你寫出它累積100項...