2016-10-11 12 views
1

私はC++の初心者であり、それ自体をコーディングしていますので、あらゆる事実を許してください。私はこの特定の質問を見つけることができませんでしたが、インターネット上の同様のものが、私はまだ私が必要な結果を得るのは苦労している。だから、Leibniz公式を使用したC++ Pi近似公式

私はパイを近似するライプニッツ式を使用しています:

PI = 4・[1 - 1/3 + 1/5 - + 1/9 1/7 ... +(-1^n)/(2n + 1)]となる。

私はcompilable and runnable programを書いたが、私の手を煩わせるのコードの主要部分は、次のとおりです。

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

が、私はこれらの番号のいずれかが届かない場合。私は奇数に入れたときに偶数に負の値を、逆に偶数になると気づいた。私が自分のプログラムで書いたことは、これまで私が授業で学んだことのすべてです。だから私が書いた範囲から実際に外れることはできません。どんな助けや説明も感謝します。

答えて

4

あなたは標識を決定するためにif/elseを持っていますが、pow(-1, terms)もあります。私はちょうどpowを取り除き、partial +=partial -=を実行しているので、iが奇数か偶数かに依存しているので、これを1に置き換えます。また、私はあなたの+=-=は別の方法だと思います。

0

これを試してみてください:

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"; 
} 
関連する問題