ONLY DO WHAT ONLY YOU CAN DO

こけたら立ちなはれ 立ったら歩きなはれ

C# で 連分数展開を使って π を求める

πの求め方


こう書いてもおk


using System;

public class CS0512
{
    public static void Main()
    {
        for (int i = 11; i <= 31; i += 2)
        {
            double radian = 1;
            double x2     = radian * radian;
            // 自作の逆正接関数
            double d1     = myAtan(radian, x2, i, 0.0); // i:必要な精度が得られる十分大きな奇数
            // 結果を π と比較
            Console.WriteLine(string.Format("{0,2:D} : {1,13:F10}, {2,13:F10}", i, d1 * 4, d1 * 4 - Math.PI));
        }
    }

    // 自作の逆正接関数
    private static double myAtan(double x, double x2, int n, double t)
    {
        int m = n / 2;
        t = (m * m * x2) / (n + t);
        n -= 2;  
        if (n <= 1) 
            return x / (1 + t);
        else
            return myAtan(x, x2, n, t);
    }
}
Z:\>csc -nologo CS0512.cs

Z:\>CS0512
11 :  3.1414634146, -0.0001292390
13 :  3.1416149068,  0.0000222532
15 :  3.1415888251, -0.0000038285
17 :  3.1415933119,  0.0000006583
19 :  3.1415925404, -0.0000001131
21 :  3.1415926730,  0.0000000194
23 :  3.1415926503, -0.0000000033
25 :  3.1415926542,  0.0000000006
27 :  3.1415926535, -0.0000000001
29 :  3.1415926536,  0.0000000000
31 :  3.1415926536,  0.0000000000
参考文献