第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
以下同様にして、ライプニッツの公式が実現されます。
計算速度は、かなり速いですね。
しかし、桁数が
まで来ると
とエラーしてしまいます。
そこで、入力は桁数を入れることに変更しましょう。
第1話へ 第3話へ
VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual
Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)