円周の面積を測定することで円周率を計算します.JavaScriptで


これは、あなたがコーディングクラブや自宅で若いコーダと一緒に、または独自に実装することができます楽しい小さなJavaScriptプログラムです.

数学


πの近似値はアルキメデスの時代から知られている.長年にわたって多くの数学者と研究者は、より高い、より高い精度でpiの値を計算することに夢中でした.
多くの新しい方法は、この魅力的な数の値を計算するために発見されている.
その値が多くの数学的応用で使用されるので、πを知ることは非常に重要です.おそらく最もよく知られた用途は、既知の半径の円の円周および領域を決定することである.
本論文では,中学生が理解する方法を用いてπの近似値を計算することを試みた.
数学のクラスから、円の面積は以下のようになります.

A = πr²


我々は通常、領域または半径のこの式を解く.しかし今回はπの式を解く.

π = A / r²


アルゴリズム


この式を解決するために、JavaScriptの助けを借りて経験的方法を使用します.このメソッドはとても簡単です.
  • ステップ1:半径R
  • の円を仮定してください
  • ステップ2:タイトな正方形で円を囲んでください.正方形は、円
  • の直径に等しい辺を有する
  • ステップ3:円
  • の中にあるすべてのピクセルを数えて、円の面積を決定します
  • ステップ4:
  • 以上の式のように、領域を半径二乗に分割することによって、πを決定してください

    チャレンジ1 .あなたはアルゴリズムを見ることができるように、しかし、最初の挑戦はすでに登場しました.私たちは、私たちがポイントが円の中にあるかどうか決定する必要があると言いました.
    これをするために、我々は外側の正方形の中のすべての点をスキャンして、その点が円の中にあるかどうか決定します.これは円の半径をその特定の点から円の中心までの距離と比較することによって達成される.
    距離が半径より小さいか等しいならば、点は円の中にあります.

    これは経験的方法であるので,十分大きな円を用いて計算の精度を改善しようとする.小さな半径の円を用いることにより,理想円以下のπ近似が得られない.次の画像を参照してください

    チャレンジ2 .前の課題は、独自の新たな挑戦を提起した.どのように我々は2点間の距離を決定するのですか?
    答えは:幾何学知識とピタゴラスの定理の少しの助けを借りて.
    二つの点の座標を知っているので、三角形の側面を決定し、Pythagorasの定理を用いてHyrichuseを見つけることができます.
    次の画像はこの説明について説明します.

    今、我々はπを計算するJavaScriptコードを書くために必要なすべてのデータを持っています.
    任意のJavaScript環境や遊び場を使用してコードを書くことができます.この記事では、無料242479152環境(先に行くと無料のアカウントを作成する-あなたは楽しいことがあります)を使用します.
    私たちは今までグラフィカルな概念について今まで話したが、コードは、グラフィカルなライブラリを使用しません.我々は、円や正方形を描くことなく、純粋なJavaScriptを使用して、このアルゴリズムを実装することができます.
    var p = calcPI();
    println(p);
    
    function calcPI()
    {
        // Choose an arbitrary circle radius
        var r = 100;
        var diameter = r * 2;
        var area = 0;
    
        // Scan all the pixels inside the square
        for(var x = 0; x < diameter; x++)
        {
            for(var y = 0; y < diameter; y++)
            {
                // Calculate the distance from each pixel
                // to the center of the circle
                var d = dist(x, y, r, r);
                if (d <= r)
                {
                    // If distance is less than the radius
                    // then add it to the area of the circle
                    area++;
                }
            }
        }
    
        // Calculate PI by dividing the area to the 
        return area / (r * r);
    }
    
    上記のコードをcodeguppy.comエディタでコピーして実行すると、結果が表示されます
    3.1415
    
    これは、このような単純な経験的方法のためにかなり正確です!
    注:2つのポイント間の距離を計算するdist関数を定義しなかったことに注意してください.これは既にcodeguppy.comで定義されているためです.しかしながら、codeguppy.comの外でコードを実行したいならば、あなたは簡単に上記の通りわずか数行のコードでこの機能を実装することができます.
    我々は、興味のある読者にDIST機能の実装の練習を残します.

    コデグッピ.コム 円の可視化


    このメソッドを使用してπを計算するにはグラフィカルなライブラリを使用する必要はありません.しかし、我々はグラフィカルな環境にいるので、楽しみの少しを持っているし、我々がスキャンしているポイントを視覚化しましょう.
    円の外側にある場合は、“TEAL”(円の内側にある場合)、または“LightBlue”のいずれかでスキャンポイントをプロットするためにポイント関数を使用します.
    ちょうど次のstroke()point()行を適切な場所に追加します.
    ...
                if (d <= r)
                {
                    // If distance is less than the radius
                    // then add it to the area of the circle
                    area++;
    
                    stroke("teal");
                }
                else
                {
                    stroke("lightblue");
                }
    
                point(x, y);
    ...
    
    これが実行効果です.

    私はあなたがこのJavaScriptの数学探査で楽しんだことを望む!
    この遊び場でこのコードの作業例を見つけることができます
    ハッピーコーディングとあなたのコーディング体験を共有する偽造しないでください!