✔ 最佳答案
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double pi = 0, d;
int i = 1;
while ((d = 1./i - 1./(i+2)) > 1e-16)
{
pi += d ;
i += 4;
}
cout << "PI = 4 * ( 1 + 1/3 - 1/5 ... - 1/" << i-2 << " ) = "
<< setprecision(15) << pi*4 << "\n";
system("pause");
return 0;
}
/*
PI = 4 * ( 1 + 1/3 - 1/5 ... - 1/141421355 ) = 3.14159263920448
由結果可知,本例的公式收斂不佳。
*/
圖片參考:
http://imgcld.yimg.com/8/n/AF02803765/o/100910220405613869272340.jpg
2009-10-22 23:23:56 補充:
請修改底下兩處,可改善結果的精確度:
1.把 while ((d = 1./i - 1./(i+2)) > 1e-16)
改成 while ((d = 4./i - 4./(i+2)) > 1e-16)
2.把 cout 述句中的 pi*4 改成 pi
如此,執行結果變成
PI = 4 * ( 1 + 1/3 - 1/5 ... - 1/282842711 ) = 3.14159264457184
2009-10-23 11:20:29 補充:
計算的過程沒錯,但顯示結果的式子忙中有誤,
請把 cout 述句中的 ... 1 + 1/3 - 1/5 ...改成... 1 - 1/3 + 1/5 ...