Pi平方n位C ++
我发现了许多类似的话题,但没有一个给我明确的解释。
我必须编写使用这个泰勒系列计算Pi平方n个数字的程序:
π^ 2 = 12(1/1 ^ 2 - 1/2 ^ 2 + 1/3 ^ 2 - 1/4 ^ 2 + ...)
我写了这个:
#include <iostream>
#include <math.h>
using namespace std;
int main() {
int n;
cout << "How many digits?" << endl;
cin >> n;
long double Pi2 = 0;
int i = 1;
while( precision is less than n ) {
if ((i%2) == 1) {
Pi2 += 1/pow(i,2);
i+=1;
}
else {
Pi2 -= 1/pow(i,2);
i+=1;
}
}
Pi2 *= 12;
cout << Pi2 << endl;
return 0;
}
并且我不知道在while()中写什么? 这个循环何时应该停止?
如果您知道所需的精度,则可以在开始循环之前计算n的最大值的正确值。 第二件事:如果您开始添加所有增量值,则从最少的数字开始。
与此类似
int ndigits;
cout << "How many digits?" << endl;
cin >> ndigits;
int n = int( pow( double(10), double(ndigits)/2 ) + 0.5 );
long double Pi2 = 0;
int i = 1;
for( int i=n; i>0; --i )
{
if ((i%2) == 1) {
Pi2 += 1/pow(long double(i),2);
}
else {
Pi2 -= 1/pow(long double(i),2);
}
}
Pi2 *= 12;
需要考虑的方法是使用ndigits创建'epsilon'值。
假设ndigits为3.这给出了一个小数位数0.0001
如果前一次迭代的值与当前迭代之间的差值小于0.0001,则可以假设您具有您之后的值,并终止while循环。
警告虽然。 双打和双打对他们可以准确持有的数字数量有一个上限。
链接地址: http://www.djcxy.com/p/12241.html