第3講 for文の学習

第4話 円周率πを計算しよう

前話問題解答
@ はじめの値5,終わりの値104(105,106も可),3
A はじめの値101,終わりの値57(58,59,60も可),−4

前話課題解答例
#pragma endregion
   private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
           int a,b,c,i,w=0;

           //TextBoxからはじめの値、終わりの値、変化の幅を取得する
           a=int::Parse(textBox1->Text);
           b=int::Parse(textBox2->Text);
           c=int::Parse(textBox3->Text);

           //和を計算する
           for(i=a;i<b+1;i=i+c){
             w=w+i;
           }

           //和を表示する
           textBox4->Text=w.ToString();


           //初期化をする
           w=0;

           //2乗の和を計算する
           for(i=a;i<b+1;i=i+c){
             w=w+i*i;
           }

           //2乗の和を表示する
           textBox5->Text=w.ToString();

           //初期化をする
           w=0;

           //3乗の和を計算する
           for(i=a;i<b+1;i=i+c){
             w=w+i*i*i;
           }

          //3乗の和を表示する
          textBox6->Text=w.ToString();

       }
   };
}
w=0;を忘れると正しい結果が出ません。
理由は、前の和を計算したときに、wは0でなくなっているからです。


さて、for文を使って、円周率を計算してみましょう。
円の面積の公式は円の面積でした。
したがって、r=1のとき、円の面積はちょうどπですから、
半径1の円の面積を計算すればよいのです。
半径1の面積を計算するためには、
1/4円
1/4円
の面積を計算して、4倍すればよいのです。
では、1/4円の面積はどのように計算したらよいでしょうか。
積分
小さい長方形に分けて足していけば、円の面積に近い値が出ます。
長方形の横幅を小さくしていけば、誤差は小さくなっていきます。

横幅をTextBoxから取得できるようにしてやって、
横幅とともに計算値がπに近づいていく様子を観察できるようにしてみましょう。
横幅をdとすると、1個目の長方形の縦は1ですから、その面積は
d×1=d
です。
では2個目の長方形の面積はどうでしょうか。
縦がわからないとわかりません。
1/4円の方程式は、円の方程式でした。
ですから、2個目の長方形の縦は、積分第1です。従って、その面積は長方形面積
3個目は縦が積分第2で、面積は2番目長方形面積
4個目は縦が積分第3で、面積は3番目長方形面積
以下同様にして、
n個目は縦が積分第nで、面積はn番目長方形面積

したがって、1/4円の面積は積分(総和)
すなわち変形を計算すればよいのです。


C言語でルートxを計算させるときは、
sqrt(x)とします。そして、sqrt()を使うときには、コードの冒頭で
#include<math.h>
と記述しておく必要があります。
コード
この冒頭を出すには、
スクロール
一番上までスクロールします。一番上までスクロールして、
#pragma onceの次の行に#include<math.h>と記述してください。
math.hはインクルードファイルの1つです。
インクルードとは読み込むという意味です。
ルートを計算するsqrt()を使うときには、インクルードファイルmath.hを
読み込んでおく必要があるのです。その読み込み命令が、
#include<math.h>
なのです。math.hには、ルート以外いろいろな関数が用意されています。



これをfor文で実現するにはどのようにコーティングしたらよいでしょうか。
Form1とコードを考えてください。




第3話へ 第5話へ

025


vc++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ

数学研究室に戻る