平方根の計算

平方根の計算には「ニュートン・ラプソン」の方法と言う有名な解法があります。
収束が早く数回ループするだけで高精度の解が求まります。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの作成

  1. x を平方根を求める元の値(2~9)とします。
    x1 に初期値として x を設定して、次の計算を繰り返すだけで高精度で解が求まります。
    xw= x/x1;
    x1= (x1+xw)/2.0;
  2. 平方根を計算する Sqrt() メソッドの全ソースコードです。
    パラメータ x には、平方根を求める2~9の値が渡されます。
        // SQRT() 関数
        static double  Sqrt(double x)
        {   double  x1,xw;
            int     i;
    
            x1= x;
            for(i=0; i<5; i++)
            {
                //Console.WriteLine("i={0}  x1={1}", i,x1);
                xw= x/x1;
                x1= (x1+xw)/2.0;
            }
            return(x1);
        }
        
  3. ちなみに学生時代に覚えた平方根の暗記は次のとおりです。
    Sqrt(N)暗記方法文章表現
    141421356 ひとよひとよにひとみごろ一夜一夜に人見ごろ
    17320508 ひとなみにおごれや 人並みのおごれや
    22360679 ふじさんろくおおむなく 富士山麓オーム鳴く
    2449489 によよくよく 似よ良く良く
    264575 なにむしいない 菜に虫いない
    2828 にやにや にやにや
    10 3162277 みいろにならぶや 三色に並ぶや
  4. Sqrt() メソッドを使ってプログラムを完成して下さい。
  5. 私が作成したプログラムで2~9の平方根を求めた結果です。
    i=0  x1=2
    i=1  x1=1.5
    i=2  x1=1.41666666666667
    i=3  x1=1.41421568627451
    i=4  x1=1.41421356237469
    x=2  sqrt(x)=1.41421356237309
    
    i=0  x1=3
    i=1  x1=2
    i=2  x1=1.75
    i=3  x1=1.73214285714286
    i=4  x1=1.73205081001473
    x=3  sqrt(x)=1.73205080756888
    
    i=0  x1=4
    i=1  x1=2.5
    i=2  x1=2.05
    i=3  x1=2.00060975609756
    i=4  x1=2.00000009292229
    x=4  sqrt(x)=2
    
    i=0  x1=5
    i=1  x1=3
    i=2  x1=2.33333333333333
    i=3  x1=2.23809523809524
    i=4  x1=2.23606889564336
    x=5  sqrt(x)=2.23606797749998
    
    i=0  x1=6
    i=1  x1=3.5
    i=2  x1=2.60714285714286
    i=3  x1=2.45425636007828
    i=4  x1=2.44949437160697
    x=6  sqrt(x)=2.44948974278755
    
    i=0  x1=7
    i=1  x1=4
    i=2  x1=2.875
    i=3  x1=2.65489130434783
    i=4  x1=2.64576704419029
    x=7  sqrt(x)=2.64575131111137
    
    i=0  x1=8
    i=1  x1=4.5
    i=2  x1=3.13888888888889
    i=3  x1=2.84378072763029
    i=4  x1=2.82846857188015
    x=8  sqrt(x)=2.82842712504986
    
    i=0  x1=9
    i=1  x1=5
    i=2  x1=3.4
    i=3  x1=3.02352941176471
    i=4  x1=3.00009155413138
    x=9  sqrt(x)=3.00000000139698
    

前田稔(Maeda Minoru)の超初心者のプログラム入門