正多角形で円周率を求める

プログラムの作成

正多角形で円周率を求めます。
pai.php のソースコードを Shift-JIS でタイプして c:\DATA\PHP\ に格納して下さい。
<?php
$k= 6;
$l= 1.0;
for($i=0; $i<10; $i++)
{   print("正" . $k . "角形    ");
    print("円周率 : " . $l*$k/2.0 . "\r\n");
    $w= $l/2.0;
    $lw= $w*$w;
    $h= sqrt(1.0-$lw);
    $hw= 1.0-$h;
    $l= sqrt($hw*$hw+$lw);
    $k= $k+$k;
}
?>

【実行画面】
コンソールモードで PHP を動かすときはインストールして下さい。
PHP のインストールは PHP Install を参照して下さい。
コマンドプロンプトを起動して pai.php をコンパイルします。
コマンドのタイプは大文字でも小文字でも構いません。
C:\Windows\System32>cd c:\DATA\PHP
C:\DATA\PHP>php pai.php
正6角形     円周率 : 3
正12角形    円周率 : 3.1058285412302
正24角形    円周率 : 3.1326286132812
正48角形    円周率 : 3.1393502030469
正96角形    円周率 : 3.1410319508905
正192角形    円周率 : 3.1414524722855
正384角形    円周率 : 3.1415576079119
正768角形    円周率 : 3.1415838921483
正1536角形    円周率 : 3.1415904632281
正3072角形    円周率 : 3.1415921059993
PATH が設定されていないときは C:\BIN\PHP で作業します。
C:\Windows\System32>cd c:\BIN\PHP
C:\BIN\PHP>php C:\DATA\PHP>pai.php

プログラムの説明

  1. 円周率を求める方法は 正多角形で円周率を求める 及び 円周率の話 から「円に内接する正方形から円周率を計算する」を参照して下さい。
    六角形の一辺の長さが 1.0 から始めます。

    $k= 6;
    $l= 1.0;
    

  2. 次に正6角形の値を元に、正12角形の外周を計算します。

       
    1. 1/6に分割した円弧に二分線を描きます。
    2. lw(多角形の辺/2 ) = 正6角形の1辺/2
    3. h(三角形の高さ) = SQRT(1**2-lw**2)
    4. l(12角形の辺) = SQRT((1-h)**2 + lw**2) / 2
     
  3. 正6角形より正12角形の方が円に近く、正24角形の方がより円に近くなります。
    これを繰り返せば、かなり正確な円周率を求める事ができるはずです。
        $w= $l/2.0;
        $lw= $w*$w;
        $h= sqrt(1.0-$lw);
        $hw= 1.0-$h;
        $l= sqrt($hw*$hw+$lw);
        $k= $k+$k;
    

前田稔の超初心者のプログラム入門
PHP Program