円周率を近似してみよう!

 


 円周率とは円周と直径の比として定義されています。では、直径をもとにして、円周の長さを求めることはできるでしょうか。それは非常に困難です。そこで、「正多角形の周りの長さ」を代用します。それによって、円周率に近い値(近似値)を出すことができます。
 アルキメデスは始めに、「正6角形の周りの長さ」を用いて円周率を近似しました。次に、「三角形の相似」や「平行線と比」のみを用いて、「正12角形の周りの長さ」、「正24角形の周りの長さ」、「正48角形の周りの長さ」、「正96角形の周りの長さ」を次々に計算して円周率を近似しました。

<円に内接する正多角形>


<円に外接する正多角形>



 0を含む自然数をnとすると、アルキメデスは正6×2n角形の周の長さを求めたことになります。つまり、nの値と正多角形の対応は以下のようになります。


n=0…正6角形
 n=1…正12角形
 n=2…正24角形
 n=3…正48角形
 n=4…正96角形



n
が大きくなればなるほど、円周率の近似が良くなることを体験してみよう。



次の空白にnの値を代入して下さい。
n=
右のenterボタンを押してください。

角形から求めたπの近似値は

<π< となります。

nの値をもっと大きくすることで、アルキメデスよりも精度の高い円周率の近似値が求まります。試してみよう

 



JavaScript のソース

var n=eval(document.arch.n.value),nk,i,l=1/2.0,m=1/Math.sqrt(3),paiin,paiout;

if(n<0,n>=25){
   nk=6*Math.pow(2,n);
   document.arch.nk.value=nk.toString();
   document.arch.paiin.value="計算不能";
   document.arch.paiout.value="計算不能";
   }
else if(n>12 && n<25) {

   nk=6*Math.pow(2,n);
   document.arch.nk.value=nk.toString();
   for (i=0;i<n;i++){
      m=m/(Math.sqrt(1+Math.pow(m,2))+1);
      }
   paiout=m*nk;
   document.arch.paiin.value="計算不能";
   document.arch.paiout.value=paiout.toString();
   }
else{
   nk=6*Math.pow(2,n);
   document.arch.nk.value=nk.toString();
   for (i=0;i<n;i++){
      l=(Math.sqrt(2-2*Math.sqrt(1-l*l)))/2;
      m=m/(Math.sqrt(1+Math.pow(m,2))+1);
      }
   paiin=l*nk;
   paiout=m*nk;
   document.arch.paiin.value=paiin.toString();
   document.arch.paiout.value=paiout.toString();
   }

 


わからないことがありましたら,こちらmsisoda@human.tsukuba.ac.jp)までご連絡ください

 

前のページに戻る