第37講 円周率を計算する△
第2話 
ライプニッツの公式による円周率の計算コード例
#pragma endregion
  private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
           long i,k;
           double pi;
           double h=-1;
           pi=0;
           k=long::Parse(textBox1->Text);
           for(i=0;i<k;i++){
             h*=-1;
             pi+=h*1/(double)(2*i+1);
           }
           textBox2->Text=(4*pi).ToString();
        }
};
}
実行例
ライプニッツの公式
解説
ライプニッツの公式は π/4=atn(1)=1-1/3+1/5-1/7+1/9-1/11+・・・
+と-が交互に出てきます。
この+と-を交互に出すための変数がhです。
h=-1で初期化されていますので、
i=0のとき、
 h=h*(-1)からh=1です。
 つまり、pi+=h*1/(double)(2*i+1)はpi=0+1/(double)(2*i+1)=pi+1/(double)1です。
i=1のとき、
 h=h*(-1)=1*(-1)=-1
 ですから、
 pi=pi+1/(double)1-1/(double)3
 です。
i=2のとき、
 h=h*(-1)=(-1)*(-1)=1
 ですから
 pi=pi+1/(double)1-1/(double)3+1/(double)5
以下同様にして、ライプニッツの公式が実現されます。

計算速度は、かなり速いですね。
しかし、桁数が
πまで来ると
円周率
とエラーしてしまいます。
そこで、入力は桁数を入れることに変更しましょう。
vc++





第1話へ 第3話へ

戻る

VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)