C#で非線形方程式を解く (反復法 または 単純代入法)
非線形方程式の解法(反復法 または 単純代入法 とも言う)を利用して2の平方根を求める
1. まず, 方程式 を, と変形する.
2. の値を として処理を繰り返して行くことで解を求める.
※ただし, 曲線 の傾きが, の傾きより小さくなければ
収束しない.
例
を
と変形しても収束しない.
そこで一工夫して,
と変形してみると
傾きが, の傾きより小さくなって収束する.
using System; public class CS0903 { public static void Main() { double x0 = 1; while (true) { double x1 = g(x0); Console.WriteLine(string.Format("{0,12:F10}", x1)); if (Math.Abs(x1 - x0) < 0.0000000001) break; x0 = x1; } } private static double g(double x) { return (x / 2) + (1 / x); } }
1.5000000000 1.4166666667 1.4142156863 1.4142135624 1.4142135624