MATLAB によるニュートン法

平成21年度 秋期 基本情報技術者試験に出題されたニュートン法のアルゴリズムを MATLAB で作成してみた。

ニュートン法とは

ニュートン法とは,方程式の解の一つを求めるアルゴリズムである。

任意に定めた解の予測値から始めて,計算を繰り返しながらその値を真の値に近づけていく。

MATLAB によるニュートン法

ニュートン法のアルゴリズムを MATLAB で作成した。3 次方程式 3x3x23x + 1 = 0 の解(解の予測値は 2.5)の一つを求めるアルゴリズムである。

a = [3, -1, -3, 1];
x = 2.5;

b = zeros(1, 3);
b(3) = 3 * a(4);
b(2) = 2 * a(3);
b(1) = a(2);

for n1 = 2:9
    f = ((a(4) * x + a(3)) * x + a(2)) * x + a(1);
    d = (b(3) * x + b(2)) * x + b(1);
    fprintf("%f, %f, %f\n", x, f, d);
    x = x - f / d;
end

上記のコードを実行した結果を示す。解の一つである x = 3 が得られた。

2.500000, -2.625000, 2.750000
3.454545, 4.969947, 14.074380
3.101425, 0.874168, 9.247965
3.006900, 0.055485, 8.082941
3.000035, 0.000283, 8.000425
3.000000, 0.000000, 8.000000
3.000000, 0.000000, 8.000000
3.000000, 0.000000, 8.000000

プログラムで与えた 3 次関数のグラフを示す。

図 3 次関数のグラフ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です