📜  使用 Nilkantha 的级数计算 Pi

📅  最后修改于: 2022-05-13 01:56:09.871000             🧑  作者: Mango

使用 Nilkantha 的级数计算 Pi

Pi是具有非循环小数的无理数。我们通常知道Pi = 3.14Pi = 22/7 ,但这只是为方便起见的近似值。可以使用Nilkantha 的系列给出一种计算方法。它是由 -

方法:观察分母的模式可以看出,对于除第一项以外的每一项,它都包含三个连续数字的乘法。我们可以使用一个变量并在每次迭代时将其增加 2 以获得分母中的正确项。进一步注意,这是交替序列,即连续项的符号不同。

按照以下步骤实施上述观察

  • 创建 3 个变量n、Pi、sign
  • 初始化Pi = 3,n = 2,符号 = 1
  • 迭代0 到 1000000以计算1000000 项和更高的准确度:
    • 在每次迭代中乘符号 = sign*(-1)
    • 计算Pi = Pi + 符号*(4/(n) * (n+1) * (n+2))
    • 每次迭代将n 增加 2
  • 打印Pi的值

下面是实现上述方法的代码:

C++
// C++ code to implement the above approach
#include 
using namespace std;
  
// Function to calculate PI
double calculatePI(double PI, double n,
                   double sign)
{
    // Add for 1000000 terms
    for (int i = 0; i <= 1000000; i++) {
        PI = PI + (sign * (4 / ((n) * (n + 1)
                                * (n + 2))));
  
        // Addition and subtraction
        // of alternate sequences
        sign = sign * (-1);
  
        // Increment by 2 according to formula
        n += 2;
    }
  
    // Return the value of Pi
    return PI;
}
  
// Driver code
int main()
{
    // Initialise sum=3, n=2, and sign=1
    double PI = 3, n = 2, sign = 1;
  
    // Function call
    cout << fixed << setprecision(8)
         << "The approximation of Pi is "
         << calculatePI(PI, n, sign) << endl;
    return 0;
}


输出
The approximation of Pi is 3.14159265

时间复杂度: O(N * logN * loglogN),其中N是迭代次数
辅助空间: O(1)