ONLY DO WHAT ONLY YOU CAN DO

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

C#で非線形方程式を解く (ベイリー法)

非線形方程式の解法(ベイリー法)を利用して2の平方根を求める

関数 f(x)テイラー展開すると,
f:id:fornext1119:20140601103603p:plain

と, 近似できる.
この式を 左辺 = 0, x = x_{n+1} として変形すると,
f:id:fornext1119:20140601115218p:plain

この式の右辺の x_{n+1}ニュートン法で使った
f:id:fornext1119:20140601115611p:plain

で置き換えると
f:id:fornext1119:20140601120743p:plain

この式を漸化式として用いる.

using System;

public class CS0905
{
    public static void Main()
    {
        double x0 = 2;

        while (true)
        {
            double x1 = x0 - (f0(x0) / (f1(x0) - (f0(x0) * f2(x0) / (2 * f1(x0)))));
            Console.WriteLine(string.Format("{0,12:F10}", x1));

            if (Math.Abs(x1 - x0) < 0.0000000001) break;
            x0 = x1;
        }
    }
    
    private static double f0(double x)
    {
        return x * x - 2;  
    }
    private static double f1(double x)
    {
        return 2 * x;  
    }
    private static double f2(double x)
    {
        return 2;  
    }
}
1.4285714286
1.4142139268
1.4142135624
1.4142135624
参考文献