数値計算法概論： No.10

1 ニュートン・ラフソン法 (その 2)

1.1 2 次収束

ニュートン法は根 (x_{s}; f(x_{s}) = 0) に十分近く、また根での微係数が有限の時 (f′(x_{s}) ≠ 0) には極めて収束が早い。実際根の近くで x_{s} から微小距離 ϵ 離れた点で Taylor 展開すると、関数と導関数は近似的に

f(x_{s} + ϵ) = f(x_{s}) + ϵf′(x_{s}) + \frac{ϵ^{2}}{2} f′′(x_{s}) + ⋯  (1)
f′(x_{s} + ϵ) = f′(x_{s}) + ϵf′′(x_{s}) + ⋯  (2)

で表される。これらを ϵ_{i} ≡ x_{i} − x_{s} として Newton-Raphson の公式

x_{i+1} = x_{i} − \frac{f(x_{i})}{f′(x_{i})}  (3)

に代入し、 f(x_{s}) = 0 を使って右辺を O(ϵ_{i}^{2}) まで展開すると

ϵ_{i+1} ≈ ϵ_{i}^{2} \frac{f′′(x_{s})}{2f′(x_{s})}  (4)

となるので、 2 次収束で極めて早く収束する。

1.2 重根近くでの収束

ところが、 f(x_{s}) = 0 の根のところで、 f′(x_{s}) = 0 となる場合には収束が遅くなる。先の節で述べたのと同様にして評価すると、 f′′(x_{s}) ≠ 0(2 重根に相当) では、

ϵ_{i+1} ≈ (1 − \frac{1}{2}) ϵ_{i}  (5)

f(x_{s}) = f′(x_{s}) = f′′(x_{s}) = 0, f′′′(x_{s}) ≠ 0 （3 重根）では

ϵ_{i+1} ≈ (1 − \frac{1}{3}) ϵ_{i}  (6)

といった 1 次収束となり、収束が遅くなる。

2 プログラム

前回のプログラムでは、ニュートン法が収束せず無限ルーチンに入った場合の対策がなされていなかった。繰返しの回数を記録し、収束しない場合でも一定回数の繰返しで計算を終了し、収束しなかったことを報告するようにプログラムを改良してみよ。

3 課題

f(x) = x((x − a)^{2} + b) (a ≠ 0)  (7)

という 3 次方程式を考える。 f(x) = 0 は自明な解 x = 0 以外にも解がある。これらを

ニュートン法で求め、収束性を議論せよ。

• b < 0: 3 つの実数解がある。 2 次収束となることを確認せよ。

• b = 0: x = a が重根となる。これが 1 次収束となることを確かめよ。

• b > 0: x = 0 のみが解である。ニュートン法は初期値によっては解が収束しない (非常に遅い) ことを確かめよ。

3.1 レポート問題

上記の課題と、自分で適当に選んだ関数についてニュートン法で議論せよ。 1 次収束、 2 次収束などについても調べること。

提出期限は 7 月 7 日まで。