1D 求根: 非区間法 (Open Methods)

概要

非区間法 (open methods) は 1 点 (または 2 点) の初期値から反復で根に近づける手法。 囲い込みを保証しない代わりに、二次以上の高速な収束が出せる。 収束半径の外から出発すると発散する可能性があるため、初期値の選択が重要。

関連 API: newton_raphson, secant_method / halley_method, schroder_method, king_method, popovski_method

Newton 法 (Newton-Raphson)

関数を現在点で 1 次 Taylor 展開し、その零点を次の点とする:

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

収束

単根 ($f(\alpha) = 0,\ f'(\alpha) \neq 0$) かつ $f \in C^2$ なら、収束半径内の $x_0$ から二次収束:

$$|x_{n+1} - \alpha| \approx \frac{|f''(\alpha)|}{2|f'(\alpha)|} \cdot |x_n - \alpha|^2$$

重根 ($f'(\alpha) = 0$) では線形収束 (収束比 $1 - 1/m$, $m$ は重複度) に劣化する。 この場合 Schröder 法または重複度を明示した変種を使う。

失敗モード

  • $f'(x_n) \approx 0$ で発散
  • 変曲点をまたぐと振動
  • 収束半径外の初期値で別の根 (または無限大) に飛ぶ

sangi の newton_raphson は導関数 $f'$ を呼び出し関数として要求する。 多項式の場合は Polynomial::derivative() で生成でき、Horner 評価で $f, f'$ を 1 パスで計算する。

関連記事: Newton 法

割線法 (secant)

Newton の $f'(x_n)$ を直前 2 点の差分商で置き換える:

$$x_{n+1} = x_n - f(x_n) \cdot \frac{x_n - x_{n-1}}{f(x_n) - f(x_{n-1})}$$

収束

収束次数: 黄金分割 $\varphi = (1 + \sqrt{5})/2 \approx 1.618$。 Newton (2 次) より遅いが、反復あたりの関数評価は 1 回。 導関数の解析形が得られないとき、または評価が極端に高価なときに有利。

$f(x_n)$ と $f(x_{n-1})$ が非常に近いと差分が桁落ちして発散するので、停滞 (stagnation) 検知が必要。

関連記事: 割線法

Halley 法

2 次 Taylor 展開の零点を解いたものに相当する三次収束法:

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

または等価な「修正 Newton」の形:

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

収束

収束次数: 3 次。誤差が三乗で減るので、Newton の二乗より速い。 反復あたり $f, f', f''$ を評価するので、評価コストが Newton の 1.5 倍未満なら総コストで勝つ。

多項式に Halley を使うときは、Horner 三重展開で $f, f', f''$ を 1 パスで計算できる (sangi の polynomial::laguerre の内部評価と同じパターン)。

関連記事: Halley 法

Householder 法

Newton 法と Halley 法を一般化した族で、$d$ 階の導関数を用いて$(d+1)$ 次収束を実現する:

$$x_{n+1} = x_n + d \cdot \frac{(1/f)^{(d-1)}(x_n)}{(1/f)^{(d)}(x_n)}$$

  • $d = 1$: Newton 法
  • $d = 2$: Halley 法
  • $d = 3$: 4 次 Householder

高次の Householder は理論的には任意の収束次数を実現するが、$f$ の高階導関数が必要で実装と評価コストが急増する。 実用では $d \leq 3$ が中心。

Schröder 法 (重根対応)

$f$ が重複度 $m$ の根 $\alpha$ を持つ場合、素朴な Newton は線形収束に落ちる。 Schröder 法は反復ステップに $m$ を掛けて二次収束を回復する:

$$x_{n+1} = x_n - m \cdot \frac{f(x_n)}{f'(x_n)}$$

または重複度を陽に使わない別形:

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

後者は Halley に似た形だが、重根に対しては Halley と異なり厳密に二次収束する (Halley は重根で次数が下がる)。 sangi の schroder_method はこの 2 番目の形を採用する。

King / Popovski 法 (4 次収束)

$f, f'$ のみを使いつつ、Newton + 1 ステップの修正で4 次収束を実現する手法群。

King 法 (1973)

Newton ステップ $y_n = x_n - f(x_n)/f'(x_n)$ の後、$f(y_n)$ を評価して修正を加える:

$$x_{n+1} = y_n - \frac{f(y_n)}{f'(x_n)} \cdot \frac{f(x_n) + \beta f(y_n)}{f(x_n) + (\beta - 2) f(y_n)}$$

パラメータ $\beta \in \mathbb{R}$ で族をなし、$\beta = 0$ で Ostrowski 法に一致する。

Popovski 法

同じく Newton + 1 ステップ修正の 4 次収束法。King とは修正項の構成が異なり、収束半径や安定性で違いがある。

反復あたりのコスト

King / Popovski は反復ごとに $f$ を 2 回、$f'$ を 1 回評価する (Newton の 3 倍の評価コスト)。 収束次数 4 で、Newton 2 反復分のコスト (4 回評価) より速い場面が多いが、損益分岐は関数評価コストに依存する。

収束基準と 停滞検知

sangi の ConvergenceCriteria<T> は次の 3 種類の判定を統合する:

  • 変数収束: $|x_{n+1} - x_n| < \text{tol}_x \cdot (|x_n| + \text{tol}_x)$
  • 関数値収束: $|f(x_n)| < \text{tol}_f$
  • 区間収束 (bracket 系のみ): $|b - a| < \text{tol}_x$

これに加えて停滞検知:

  • $|x_{n+1} - x_n|$ が前ステップから縮まらない
  • $|f(x_n)|$ が改善しない
  • $f'(x_n)$ が $\epsilon$ オーダーで $0$ に近づく (Newton 系)

これらが検知されたら、RootFindingResultpartial_success を返し、現在の最良近似と推定誤差を含める。 収束しなかったことを呼び出し側に明示することで、ユーザーは別アルゴリズムへフォールバックできる。

許容誤差の選び方

$\text{tol}_x \approx \sqrt{\epsilon_{\text{machine}}}$ (double なら $\approx 10^{-8}$) が経験則。 Newton 系の二次収束では、最後の反復で誤差がほぼ機械精度まで落ちる (誤差の二乗が機械精度を切る) ため、これより厳しい tol_x は意味を成さない。

比較表

アルゴリズム必要な情報収束次数反復あたり評価備考
Newton$f, f'$2$f$ 1 回 + $f'$ 1 回標準的選択
secant$f$$\varphi \approx 1.618$$f$ 1 回導関数不要
Halley$f, f', f''$3$f$ 1 + $f'$ 1 + $f''$ 1三次収束
Householder $d$$f, f', \ldots, f^{(d)}$$d+1$$d+1$ 回程度高次は実装重い
Schröder$f, f', f''$2 (重根でも)3 回重根対応
King / Popovski$f, f'$4$f$ 2 + $f'$ 1導関数 1 階のみで 4 次

導関数が容易に得られるなら Halley、得られないなら King / Popovski か secant、重根を疑うなら Schröder、というのが大まかな指針。

参考文献

  • Ostrowski, A. M. (1973). Solution of Equations in Euclidean and Banach Spaces. 3rd ed. Academic Press.
  • Traub, J. F. (1964). Iterative Methods for the Solution of Equations. Prentice-Hall.
  • King, R. F. (1973). "A family of fourth order methods for nonlinear equations". SIAM Journal on Numerical Analysis, 10(5), 876–879.
  • Schröder, E. (1870). "Über unendlich viele Algorithmen zur Auflösung der Gleichungen". Mathematische Annalen, 2, 317–365.