第2章: ニュートン法(ニュートン・ラフソン法)

Newton's Method (Newton-Raphson Method)

basic

公開日: 2026-03-27

1. 概要

ニュートン法(Newton's Method)は、非線形方程式 $f(x) = 0$ の根を数値的に求める反復法であり、数値解析における最も基本的かつ強力な手法の一つである。Isaac Newton と Joseph Raphson により独立に発見され、ニュートン・ラフソン法(Newton-Raphson Method)とも呼ばれる。

関数 $f$ を各点での接線(1次テイラー展開)で近似し、その接線と $x$ 軸の交点を次の近似値とする。適切な初期値から始めれば二次収束し、反復ごとに有効桁数がおよそ2倍になる。

2. アルゴリズム

ニュートン法の反復公式

$f$ が微分可能で $f'(x_n) \neq 0$ のとき、

$$x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}, \qquad n = 0, 1, 2, \ldots$$

手順は次の通りである。

  1. 初期値 $x_0$ を選ぶ。
  2. 反復式により $x_1, x_2, \ldots$ を順次計算する。
  3. $|x_{n+1} - x_n| < \varepsilon$ または $|f(x_n)| < \delta$ となったら停止する($\varepsilon$ は位置の許容誤差、$\delta$ は関数値の許容誤差)。

3. グラフによる解釈

点 $(x_n,\, f(x_n))$ における接線の方程式は

$$y = f(x_n) + f'(x_n)(x - x_n)$$

であり、この接線が $x$ 軸($y=0$)と交わる点が $x_{n+1}$ である。

ニュートン法のグラフによる解釈
図1. ニュートン法のグラフによる解釈($f(x) = x^3 - 2x - 5$)。曲線上の点 $(x_n,\, f(x_n))$ での接線と $x$ 軸の交点が次の近似値 $x_{n+1}$ となる。$x_0 = 3.5$ から $x_1 \approx 2.61 \to x_2 \approx 2.20 \to x_3 \approx 2.10$ と根 $x^* \approx 2.095$ に急速に収束する。

公式の導出

点 $(x_n, f(x_n))$ における接線の方程式は次のように書ける:

$$y - f(x_n) = f'(x_n)(x - x_n)$$

この接線が $x$ 軸と交わる点($y = 0$)を求めると:

$$0 - f(x_n) = f'(x_n)(x - x_n)$$ $$x = x_n - \frac{f(x_n)}{f'(x_n)}$$

これが次の近似値 $x_{n+1}$ である。すなわち、ニュートン法の反復公式は接線の $x$ 切片として自然に導かれる。

ニュートン法の公式の導出。点(xn, f(xn))での接線がx軸と交わる点がxn+1となる。
図2. 公式の導出。曲線上の点 $(x_n, f(x_n))$ での接線(傾き $f'(x_n)$)が $x$ 軸と交わる点が次の近似値 $x_{n+1}$ である。

4. 二次収束

定理(二次収束)

$f$ が2回連続微分可能で、単根 $x^*$($f(x^*)=0$, $f'(x^*)\neq 0$)の十分近くに $x_0$ をとると、ニュートン法は二次収束する。すなわち、定数 $C = \dfrac{|f''(x^*)|}{2|f'(x^*)|}$ に対して

$$|x_{n+1} - x^*| \approx C \cdot |x_n - x^*|^2$$

が成り立つ。

この式は「次の誤差が、現在の誤差の2乗の定数倍になる」ことを意味する。例えば現在の誤差が $10^{-3}$ ならば、次の誤差はおよそ $C \times (10^{-3})^2 = C \times 10^{-6}$ となる。反復ごとに有効桁数が約2倍に増えるため、「二次」収束と呼ばれる。

証明

Step 1(テイラー展開): $f(x^*)$ を $x = x_n$ の周りで1次までテイラー展開する。$f$ は2回連続微分可能であるから、最後の項がラグランジュ型の剰余項として

$$f(x^*) = f(x_n) + f'(x_n)(x^* - x_n) + \frac{f''(\xi_n)}{2}(x^* - x_n)^2$$

と書ける。ここで $\xi_n$ は $x_n$ と $x^*$ の間のある点である。$x^*$ は根なので $f(x^*) = 0$ であるから

$$f(x_n) + f'(x_n)(x^* - x_n) + \frac{f''(\xi_n)}{2}(x^* - x_n)^2 = 0 \tag{*}$$

Step 2($f(x_n)$ を消去): ニュートン法の反復式 $x_{n+1} = x_n - \dfrac{f(x_n)}{f'(x_n)}$ を変形すると

$$f(x_n) = f'(x_n)(x_n - x_{n+1})$$

これを $(*)$ に代入する:

$$f'(x_n)(x_n - x_{n+1}) + f'(x_n)(x^* - x_n) + \frac{f''(\xi_n)}{2}(x^* - x_n)^2 = 0$$

Step 3(整理): 左辺の第1項と第2項をまとめる。$f'(x_n)$ でくくると

$$f'(x_n)\bigl[(x_n - x_{n+1}) + (x^* - x_n)\bigr] + \frac{f''(\xi_n)}{2}(x^* - x_n)^2 = 0$$

括弧内を整理すると $(x_n - x_{n+1}) + (x^* - x_n) = x^* - x_{n+1}$ であるから

$$f'(x_n)(x^* - x_{n+1}) + \frac{f''(\xi_n)}{2}(x^* - x_n)^2 = 0$$

Step 4(誤差の漸化式): $f'(x_n) \neq 0$($x^*$ が単根であり $x_n$ が十分近ければ保証される)なので、両辺を $f'(x_n)$ で割ると

$$x^* - x_{n+1} = -\frac{f''(\xi_n)}{2f'(x_n)}(x^* - x_n)^2$$

符号を入れ替えて

$$x_{n+1} - x^* = \frac{f''(\xi_n)}{2f'(x_n)}(x_n - x^*)^2$$

$n \to \infty$ で $x_n \to x^*$、$\xi_n \to x^*$ であるから、$C = \dfrac{|f''(x^*)|}{2|f'(x^*)|}$ として

$$|x_{n+1} - x^*| \approx C \cdot |x_n - x^*|^2 \quad \blacksquare$$

二次収束の意味

誤差が2乗で減少するため、正確な桁数が毎回約2倍になる。

例:$10^{-2} \to 10^{-4} \to 10^{-8} \to 10^{-16}$

ニュートン法と二分法の収束速度比較
図3. 収束速度の比較($f(x) = x^3 - 2x - 5$、対数スケール)。赤:ニュートン法の誤差 $|x_k - x^*|$($x_0 = 3.5$)、青破線:二分法の区間幅 $|b_k - a_k|$(初期区間 $[1, 3.5]$)。ニュートン法は6回で機械精度 $10^{-15}$ に到達する。二分法は区間幅が毎回半分になるため対数スケールで直線となり、25回で $10^{-7}$ 程度にとどまる。

5. 例: $\sqrt{2}$ の計算

$f(x) = x^2 - 2$ にニュートン法を適用

$f'(x) = 2x$ より、反復公式は次のようになる:

$$x_{n+1} = x_n - \frac{x_n^2 - 2}{2x_n} = \frac{1}{2}\!\left(x_n + \frac{2}{x_n}\right)$$

初期値 $x_0 = 1$ から出発すると:

$n$ $x_n$ 誤差 $|x_n - \sqrt{2}|$ 正確な桁数
0 1.000000000 4.14 × 10⁻¹ 0
1 1.500000000 8.58 × 10⁻² 1
2 1.416666667 2.45 × 10⁻³ 2
3 1.414215686 2.12 × 10⁻⁶ 5
4 1.414213562 1.59 × 10⁻¹² 11

わずか4回の反復で11桁の精度が得られる。正確な桁数が 0 → 1 → 2 → 5 → 11 とおよそ倍増していく様子が二次収束の威力を示している。

6. 多変数ニュートン法

非線形連立方程式 $\mathbf{f}(\mathbf{x}) = \mathbf{0}$($\mathbf{x} \in \mathbb{R}^n$)に対しては、反復式が

$$\mathbf{x}_{n+1} = \mathbf{x}_n - J(\mathbf{x}_n)^{-1}\,\mathbf{f}(\mathbf{x}_n)$$

となる。ここで $J(\mathbf{x})$ はヤコビ行列

$$J(\mathbf{x}) = \begin{pmatrix} \dfrac{\partial f_1}{\partial x_1} & \cdots & \dfrac{\partial f_1}{\partial x_n} \\ \vdots & \ddots & \vdots \\ \dfrac{\partial f_n}{\partial x_1} & \cdots & \dfrac{\partial f_n}{\partial x_n} \end{pmatrix}$$

である。反復式には $J^{-1}$ が現れるが、実装上は逆行列を直接計算しない。代わりに線形方程式

$$J(\mathbf{x}_n)\,\Delta\mathbf{x} = -\mathbf{f}(\mathbf{x}_n)$$

を LU 分解等で解き、$\mathbf{x}_{n+1} = \mathbf{x}_n + \Delta\mathbf{x}$ と更新する。逆行列を避ける理由は主に2つある:

  • 数値安定性:逆行列の計算は桁落ちの影響を受けやすく、LU 分解で直接連立方程式を解く方が精度が高い。
  • メモリ効率:逆行列は $n \times n$ の密行列として保持する必要があるが、LU 分解なら元の行列と同じ記憶域で済み、$\Delta\mathbf{x}$ を直接得られる。

$J(\mathbf{x}_n)$ は反復ごとに変わるため、LU 分解も毎回再計算が必要である。

7. 収束条件と失敗例

収束が保証される十分条件

  • $f(x^*) = 0$ かつ $f'(x^*) \neq 0$(単根)。
  • $f$ が根の近傍で2回連続微分可能。
  • 初期値 $x_0$ が根に十分近い。

失敗する場合

  • 重根: $f'(x^*)=0$ のとき、収束が線形に劣化する。重複度 $m$ が既知ならば修正ニュートン法 $x_{n+1} = x_n - m\,f(x_n)/f'(x_n)$ で二次収束を回復できる。$m$ が未知の場合は、$u(x) = f(x)/f'(x)$ にニュートン法を適用する方法がある($u$ の根は単根となる)。
  • 導関数がゼロ: 反復途中で $f'(x_n) \approx 0$ となると発散する。
  • 周期的振動: 例えば $f(x) = x^3 - 2x + 2$ で $x_0 = 0$ とすると $x_0 \to 1 \to 0 \to 1 \to \cdots$ と振動する。
ニュートン法が失敗する3つのパターン:重根での線形収束劣化、導関数ゼロ付近での発散、周期的振動
図4. ニュートン法が失敗する3つのパターン。(a) 重根 $f(x)=x^2$:収束はするが線形に劣化(毎回半分にしかならない)。(b) 発散 $f(x)=\arctan x$:$f'(x_n)$ が小さいため接線が寝て、次の点が遠くに飛ばされる。(c) 振動 $f(x)=x^3-2x+2$, $x_0=0$:$0 \to 1 \to 0 \to 1 \to \cdots$ と永久に振動する。

改良手法と実用上の対策

減衰ニュートン法($x_{n+1} = x_n - \alpha_n\, f(x_n)/f'(x_n)$、$\alpha_n$ はライン探索で決定)や、二分法との併用により大域的収束を保証できる。

実用上の対策

  • 二分法で大まかな範囲を絞ってからニュートン法を適用する。
  • $|f'(x_n)|$ が小さすぎる場合はステップを制限する。
  • 反復回数の上限を設ける。

8. 二分法との比較

二分法 ニュートン法
収束速度 1次(線形) 2次(二乗)
必要な情報 $f(x)$ のみ $f(x)$ と $f'(x)$
収束の保証 必ず収束 初期値に依存
典型的な反復回数 20〜50回 5〜10回

9. まとめ

  • ニュートン法の反復公式: $x_{n+1} = x_n - \dfrac{f(x_n)}{f'(x_n)}$
  • 接線と $x$ 軸の交点を次の近似値とするグラフ上の操作である。
  • 二次収束: 正確な桁数が毎回約2倍に増加する。
  • 導関数 $f'(x)$ の計算が必要である。
  • 初期値の選択が重要であり、収束しない場合がある。
  • 多変数への拡張ではヤコビ行列と線形方程式の求解が必要となる。

10. よくある質問

Q1. ニュートン法とは何ですか?

非線形方程式 $f(x)=0$ の根を接線近似により反復的に求める手法である。反復式は $x_{n+1} = x_n - f(x_n)/f'(x_n)$ で与えられる。

Q2. ニュートン法の収束速度はどのくらいですか?

単根の近傍では二次収束する。すなわち反復ごとに有効桁数がおよそ2倍に増加する。重根の場合は線形収束に劣化する。

Q3. ニュートン法が失敗する場合はありますか?

導関数がゼロに近い場合、初期値が根から遠すぎる場合、周期振動する場合等に失敗する。減衰ニュートン法や二分法との併用で対処可能である。

11. 参考資料

  • Wikipedia「ニュートン法」(日本語版)
  • Wikipedia「Newton's method」(英語版)
  • R. L. Burden & J. D. Faires, Numerical Analysis, 10th ed., Cengage, 2016.
  • J. Nocedal & S. J. Wright, Numerical Optimization, 2nd ed., Springer, 2006.