簡體   English   中英

使用萊布尼茨公式的 C++ Pi 近似

[英]C++ Pi Approximation using Leibniz Formula

我是 C++ 和編碼本身的初學者,所以請原諒任何詞匯失誤。 我在互聯網上找不到這個特定的問題,但類似的問題,但我仍然很難得到我需要的結果。

所以我使用萊布尼茨公式來近似 pi,它是:

pi = 4 · [ 1 – 1/3 + 1/5 – 1/7 + 1/9 … + (–1 ^ n)/(2n + 1) ]。

我已經編寫了一個可編譯和可運行的程序,但困擾我的代碼的主要部分是:

if (terms > 0){

        double partial = 0;

        for (i = 0; i < terms; i++)
            if (i % 2 == 0)
                partial -= (pow(-1,terms))/((2.0 * i) + 1);
            else
                partial += (pow(-1,terms))/((2.0 * i) + 1);

        double newPi = 4 * partial;

        cout << "The approximation is " << newPi << " using " << terms << " terms.\n";

}

如果項 = 3,則近似值 = 2.895

如果項 = 10,則近似值 = 3.232

如果項 = 50,則近似值 = 3.161

我沒有得到任何這些數字。 不過我注意到,當我輸入一個奇數時,我得到一個負數,反之亦然。 我在程序中編寫的所有內容都是迄今為止我在課堂上學到的所有內容,因此我不能真正超出我編寫的范圍。任何幫助或解釋將不勝感激。

您有一個 if/else 來確定符號,但是您也可以執行pow(-1, terms) 我只想擺脫pow並將其替換為1 ,因為您已經在執行partial +=partial -=取決於i是奇數還是偶數。 另外,我認為您的+=-=應該相反。

嘗試這個:

if (terms > 0){
     double partial = 0;
     for (i = 0; i <= terms; i++)
         partial += pow(-1,i)/(2.0 * i + 1);
     double newPi = 4 * partial;
     cout << "The approximation is " << newPi << " using " << terms << " terms.\n";
}
if (terms > 0){
        double newPi  = 0.0;
        for (int i=0; i < n; ++i) { 
            newPi += sign / (2.0 * i + 1.0);
            sign  = -sign; 
        }
        newPi *= 4;
        cout << "The approximation is " << newPi << " using " << terms << " terms.\n";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM