賢い当てずっぽうの技法 ― ニュートン法の気持ち

Newton's Method as Clever Guessing

読み物

方程式 $f(x) = 0$ の解を求めたい。けれど式をいくらにらんでも、きれいな公式では解けそうにない。こういうとき、私たちには最後の手段が残されている ―― 当てずっぽうだ。

適当に「だいたいこのへんかな」と一つ値を置いてみる。外れたら、もう少し良さそうな値に置き直す。これを繰り返せば、いつかは解に近づく。数値計算の求根法は、煎じ詰めればどれもこの「当てずっぽうの繰り返し」なのである。問題は、いかに賢く当て直すか。その賢さの極致が、ニュートン法だ。この記事では、ニュートン法の「気持ち」をのぞいてみたい。

わざと接線にだまされてみる

ニュートン法のアイデアは、思いきって単純だ。曲がっている曲線を、いまいる場所のすぐ近くだけ、まっすぐな直線だとみなす。それだけである。

いまの推測値 $x_n$ のところで、曲線 $y = f(x)$ に接する直線(接線)を引く。曲線そのもので解を探すのは難しいが、直線なら横軸と交わる点はすぐ計算できる。その交点を「次の、もっと良い当てずっぽう」 $x_{n+1}$ として採用する。式で書けば $$ x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} $$ となる。$f'(x_n)$ は接線の傾きだ。難しそうに見えるが、やっていることは「接線をすべり台にして、横軸まで一気にすべり降りる」 ―― ただそれだけである。

ニュートン法:点 x_n での接線が横軸と交わる点を次の近似 x_{n+1} とし、根に急速に近づく x y = f(x) x₀ x₁ x₂ r 接線 x₀=2 → x₁=1.5 → x₂≈1.41667 根 r=√2≈1.41421。一歩ごとに 合う桁数が倍々(二次収束)。
図1. ニュートン法。$f(x)=x^2-2$(根 $r=\sqrt{2}$)に対し、点 $x_n$ での接線が横軸と交わる点を次の近似 $x_{n+1}$ とする。$x_0=2 \to x_1=1.5 \to x_2\approx1.41667$ と、わずか二歩で根 $r\approx1.41421$ のすぐそばまで近づく。

わざと曲線を直線だと思い込む。いわば自分から接線にだまされにいく。けれども解の近くでは曲線は本当にほとんどまっすぐなので、このだまされ方は、当て直すたびにどんどん的中していく。

なぜ猛烈に速いのか

ニュートン法の真骨頂は、その速さにある。確実だが地道な二分法は、一歩ごとに解のいる区間を半分にする。半分、また半分 ―― これでも立派だが、正しい桁数は一歩でおよそ $0.3$ 桁ずつしか増えない。十進で一桁ぶん正確にするのに、三、四歩かかる勘定だ。

ニュートン法は桁の増え方がまるで違う。解の近くまで来ると、正しい桁数がおおよそ一歩ごとに倍々になっていく。$2$ 桁合っていたものが次は $4$ 桁、その次は $8$ 桁、$16$ 桁……。倍精度の限界(約 $16$ 桁)など、数歩で軽く突き抜けてしまう。この爆発的な近づき方を二次収束と呼ぶ。

同じ「当てずっぽうの繰り返し」でも、接線という一手間を加えるだけで、地道な歩みが一気にロケットの加速に変わる。ニュートン法二分法、そして導関数のいらない割線法の三つを見比べると、求根法の世界の「速さと確実さのトレードオフ」がよく見えてくる。

ひとくちメモ:あなたの電卓も内心ニュートンしている

$\sqrt{2}$ の値を求めるのに、コンピュータの内部ではしばしばニュートン法が走っている。$x^2 - a = 0$ にニュートン法を当てると $x_{n+1} = \dfrac{1}{2}\!\left(x_n + \dfrac{a}{x_n}\right)$ という、いかにも対称な式になる。「いまの推測値 $x_n$ と $a/x_n$ の平均をとる」この式は、実は古代バビロニアの人々が粘土板で平方根を計算していた手順と本質的に同じものだ。数千年前の知恵が、形を変えてあなたの電卓の中で今も動いている。

速さには代償がある

これだけ速いなら、もう二分法などいらないのでは ―― と言いたくなる。だが世の中、うまい話には裏がある。ニュートン法は速い代わりに、当たり外れがあるのだ。

たとえば最初の当てずっぽうが解から遠く離れていると、接線がとんでもない方向を指して、かえって解から遠ざかってしまうことがある。あるいは接線がほとんど水平な、平らな場所に当たると、すべり台はほぼ真横にのびて、はるか彼方へすっ飛ばされる(式の分母 $f'(x_n)$ がゼロに近づくのを思い出してほしい)。運が悪いと二つの点のあいだを永遠に行ったり来たりして、いつまでも止まらないことすらある。

おまけにニュートン法は接線の傾き、すなわち導関数 $f'$ を毎回必要とする。導関数が手元になかったり、計算が重かったりする場面では、それだけで使いづらい。確実に解を捕まえたい二分法、速いが気難しいニュートン法 ―― だからこそ実用の世界では、両者の良いとこ取りをしたハイブリッドな手法が好まれる。速さと確実さは、たいてい仲が悪いのである。

「局所線形」という大きな思想

ニュートン法の核にあるのは「曲がったものも、ごく近くで見ればまっすぐ」という発想だ。これは数値解析だけの小技ではない。微分という概念そのものが、まさにこの考え方の上に立っている。複雑な関数を、その場その場で直線(一次式)に置き換えて扱う ―― この「局所線形化」は、最適化、機械学習、ロボットの制御まで、応用数学のあらゆる場所に顔を出す共通の思想なのである。

たった一本の接線を引くという素朴な操作が、これほど広く深い考え方とつながっている。ニュートン法は、その思想に初めて出会うための、いちばん見晴らしのよい入口だといってよい。

結び ― 賢く外して、賢く当てる

当てずっぽうも、やり方しだいでこれほど鋭くなる。接線にわざとだまされ、外れた値から次のもっと良い値を作り出す。ニュートン法とは、推測を組織的に磨き上げる技法であり、その速さの裏には「曲がったものも近くではまっすぐ」という一つの澄んだ直感がある。

速さと危うさを併せ持つこの手法を、性質まで含めてきちんと味わうと、求根法の地図がぐっと立体的に見えてくる。次は中級へ進み、行列や関数近似といった、より大きな舞台で「賢く当てる」技がどう花開くのかを眺めにいこう。

よくある質問

ニュートン法はなぜ速く収束するのか

ニュートン法は、いまの推測値での接線を引き、その接線が横軸と交わる点を次の推測値とする。曲線を局所的に直線で置き換えて一気に解の近くまでジャンプするため、解に近づくと正しい桁数がおおよそ一歩ごとに倍々で増えていく。これを二次収束と呼び、二分法のように桁が少しずつ増える方法より圧倒的に速い。

ニュートン法はいつでも使えるのか

いつでも使えるわけではない。速い代わりに当たり外れがある。最初の推測値が解から遠かったり、接線がほとんど水平な平らな場所に当たったりすると、答えからかえって遠ざかったり、二点間を行ったり来たりして止まらなくなることがある。導関数も必要となる。確実さが欲しい場面では二分法と組み合わせるなど、性質を理解して使い分けることが大切である。