计算 Pi 的值最多 'n' 位小数
Calculation of value of Pi up to 'n' decimal places
我试图制作一个 C++ 程序来使用 Leibniz formula.
计算 Pi 的值最多 'n' 个小数位
号码'n'将由用户输入。
我成功地创建了莱布尼茨公式,但我在后面的部分遇到了问题,即值精确到 'n' 个位置。
麻烦:-
随着越来越多的术语将继续添加到它,它的数字将不断变化,因此如何判断特定数字是否已停止变化,尽管添加了更多术语。
目前写的代码:-
#include<iostream>
using namespace std;
int main()
{
float s=0;
int w=-1;
for(float i=1;;i=i+2)
{
w=w*(-1);
s=s+w*(1/i);
cout<<s<<endl;
}
return 0;
}
如果事情能保持简单就好了,因为我只是 C++ 的初学者。
非常感谢:)
因为你想计算 Pi
到 任意 n
th 数字,你需要一个库来处理 big float数字;见
C++ library for big float numbers
真正的麻烦是莱布尼茨公式在上下文中没有用。实际达到的精度可以估计为公式
中的最后一项
Pi / 4 = 1/1 - 1/3 + 1/5 - 1/7 + ... + (-1)**(n + 1) * 1 / (2 * n - 1) + ...
例如,如果您希望 Pi
达到第 100
位,则表示残差(和最后一项)应小于 1e-100
:
1 / (2 * n - 1) < 1e-100
2 * n - 1 > 1e100
n > 5e99
如您所见,5e99
loops 对于现代(超级)计算机 太多
我试图制作一个 C++ 程序来使用 Leibniz formula.
计算 Pi 的值最多 'n' 个小数位号码'n'将由用户输入。 我成功地创建了莱布尼茨公式,但我在后面的部分遇到了问题,即值精确到 'n' 个位置。
麻烦:- 随着越来越多的术语将继续添加到它,它的数字将不断变化,因此如何判断特定数字是否已停止变化,尽管添加了更多术语。
目前写的代码:-
#include<iostream>
using namespace std;
int main()
{
float s=0;
int w=-1;
for(float i=1;;i=i+2)
{
w=w*(-1);
s=s+w*(1/i);
cout<<s<<endl;
}
return 0;
}
如果事情能保持简单就好了,因为我只是 C++ 的初学者。
非常感谢:)
因为你想计算 Pi
到 任意 n
th 数字,你需要一个库来处理 big float数字;见
C++ library for big float numbers
真正的麻烦是莱布尼茨公式在上下文中没有用。实际达到的精度可以估计为公式
中的最后一项 Pi / 4 = 1/1 - 1/3 + 1/5 - 1/7 + ... + (-1)**(n + 1) * 1 / (2 * n - 1) + ...
例如,如果您希望 Pi
达到第 100
位,则表示残差(和最后一项)应小于 1e-100
:
1 / (2 * n - 1) < 1e-100
2 * n - 1 > 1e100
n > 5e99
如您所见,5e99
loops 对于现代(超级)计算机 太多