Math World Lab

ニュートン法(数値解法)

接線を使って方程式の解に高速収束する反復アルゴリズム

この単元の発見をシェア
3行要約(Key Takeaways / AIOサマリー)
1
ニュートン法は関数 f(x)f(x) の根(f(x)=0f(x)=0 となる xx)を、接線と xx 軸の交点を繰り返し求めることで高速に近似する反復アルゴリズム
2
更新式 xn+1=xn−f(xn)f′(xn)x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} を繰り返すと、初期値が適切であれば正解付近で反復ごとに正しい桁数がほぼ倍になる「2次収束」が起こる
3
多くのプログラミング言語の `sqrt()` 関数や機械学習の最適化アルゴリズムは、内部でニュートン法(またはその派生法)を使って高速に解へ収束させている

なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値

Purpose & Motivation

なぜ生まれたのか?

ニュートン法は関数 $f(x)$ の根($f(x)=0$ となる $x$)を、接線と $x$ 軸の交点を繰り返し求めることで高速に近似する反復アルゴリズム

身につく武器・思考力

更新式 $x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}$ を繰り返すと、初期値が適切であれば正解付近で反復ごとに正しい桁数がほぼ倍になる「2次収束」が起こる

実社会・ITでの活躍現場

  • •sqrt() 関数と数値ソルバーにおけるニュートン法の実装
  • •ITシステム・アルゴリズム実装における論理設計
  • •データ分析やシミュレーションにおける数理モデリング

Layer 1 — 直感・シミュレーター

対象の関数 f(x)f(x) をボタンで選び(例: x2−2x^2-2 で 2\sqrt{2} を求める)、初期値 x0x_0 をスライダーで設定してから「1ステップ進める」を押してみよう。現在の点における接線が描かれ、その接線と xx 軸との交点が次の近似値 xn+1x_{n+1} になる様子と、反復のたびに真の解へ急速に近づいていく数列 x0,x1,x2,…x_0, x_1, x_2, \dots を確認できる。

反復の履歴(数列 xₙ):
x0 = 2.500000

x0=2.5000,f(x0)=4.2500,f′(x0)=5.0000x_{0} = 2.5000, \quad f(x_{0}) = 4.2500, \quad f'(x_{0}) = 5.0000

↑ 緑の点が現在の近似値 xn の位置(x軸上)、赤い直線が点 (xn, f(xn)) における接線です。「1ステップ進める」を押すたびに、この接線と x 軸の交点が次の近似値 xn+1 になり、反復のたびに急速に根へ近づく様子(2次収束)を確認できます。

直感チェック!ミニクイズ

f(x)=x2−2f(x) = x^2 - 2(2\sqrt{2} を求める)にニュートン法を適用するとき、更新式 xn+1=xn−f(xn)f′(xn)x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} はどれになるか?

Layer 2 — 定義・受験・証明

定義

ニュートン法(ニュートン・ラフソン法)は、微分可能な関数 f(x)f(x) の方程式 f(x)=0f(x)=0 の解(根)を数値的に求める反復アルゴリズムである。現在の近似解 xnx_n における関数の接線

y=f(xn)+f′(xn)(x−xn)y = f(x_n) + f'(x_n)(x - x_n)

と xx 軸(y=0y=0)との交点を次の近似解 xn+1x_{n+1} とする、という操作を繰り返す。

xn+1=xn−f(xn)f′(xn)x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

初期値 x0x_0 が真の解に十分近く、f′(x)≠0f'(x) \neq 0 であれば、この数列は急速に真の解に収束する。

公式・数理モデル

xn+1=xn−f(xn)f′(xn)x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

証明・導出

接線交点としての導出: 点 (xn,f(xn))(x_n, f(x_n)) における接線の傾きは微分係数 f′(xn)f'(x_n) であるから、接線の方程式は

y−f(xn)=f′(xn)(x−xn)y - f(x_n) = f'(x_n)(x - x_n)

この直線が xx 軸(y=0y=0)と交わる点を xn+1x_{n+1} とすると、

0−f(xn)=f′(xn)(xn+1−xn)  ⟹  xn+1−xn=−f(xn)f′(xn)  ⟹  xn+1=xn−f(xn)f′(xn)0 - f(x_n) = f'(x_n)(x_{n+1} - x_n) \implies x_{n+1} - x_n = -\frac{f(x_n)}{f'(x_n)} \implies x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

が得られる。

2次収束性の直感:真の解を α\alpha、誤差を en=xn−αe_n = x_n - \alpha とする。テイラー展開 0=f(α)=f(xn)−f′(xn)en+12f′′(ξ)en20=f(\alpha) = f(x_n) - f'(x_n)e_n + \frac{1}{2}f''(\xi)e_n^2(ξ\xi は xnx_n と α\alpha の間のある点)を更新式に代入すると、

en+1=xn+1−α=en−f(xn)f′(xn)≈f′′(α)2f′(α)en2e_{n+1} = x_{n+1}-\alpha = e_n - \frac{f(x_n)}{f'(x_n)} \approx \frac{f''(\alpha)}{2f'(\alpha)}e_n^2

となり、誤差 en+1e_{n+1} が前の誤差 ene_n の2乗にほぼ比例することが分かる。これは反復のたびに正しい桁数がおよそ倍増する「2次収束」を意味し、収束が保証される範囲では非常に高速である。

押さえておきたいポイント

  • 接線の傾き f′(xn)f'(x_n) が0に近いと分母が0に近づき、次の近似値が大きく飛んでしまい発散することがある
  • 初期値 x0x_0 が真の解から遠い、または関数が変曲点を持つ場合は収束せず振動・発散することがある(大域収束性は保証されない)
  • f(x)=x2−af(x)=x^2-a に適用すると更新式は xn+1=12(xn+axn)x_{n+1}=\frac{1}{2}(x_n+\frac{a}{x_n}) となり、これは古代から知られる平方根の近似法(バビロニア法・ヘロンの公式)と一致する
  • 多変数関数の最適化(勾配が0になる点を探す)にニュートン法を適用したものが「ニュートン法による最適化」であり、勾配降下法よりも収束が速い場合がある
参照基準・学習指導要領との対応

本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。

Layer 3 — 工学応用・現場実装

sqrt() 関数と数値ソルバーにおけるニュートン法の実装

多くの数値計算ライブラリやCPUの高速逆平方根命令、非線形方程式ソルバー(Newton-Raphsonソルバー)は、ニュートン法の反復更新を内部で用いている。以下は f(x)=x2−af(x)=x^2-a に対するニュートン法で平方根を計算する実装。

1// ニュートン法による f(x) = 0 の根の探索(汎用実装)
2function newtonMethod(
3 f: (x: number) => number,
4 fPrime: (x: number) => number,
5 x0: number,
6 tolerance = 1e-10,
7 maxIterations = 100
8): { root: number; iterations: number; history: number[] } {
9 let x = x0;
10 const history: number[] = [x];
11
12 for (let i = 0; i < maxIterations; i++) {
13 const fx = f(x);
14 if (Math.abs(fx) < tolerance) break;
15
16 const dfx = fPrime(x);
17 if (Math.abs(dfx) < 1e-14) {
18 throw new Error("導関数がゼロに近く、これ以上反復できません");
19 }
20
21 x = x - fx / dfx; // 接線と x 軸の交点へ更新
22 history.push(x);
23 }
24
25 return { root: x, iterations: history.length - 1, history };
26}
27
28// 例: f(x) = x^2 - 2 の根(= √2)をニュートン法で求める
29const result = newtonMethod(
30 (x) => x * x - 2,
31 (x) => 2 * x,
32 1.0 // 初期値
33);
34
35console.log(`√2 の近似値: ${result.root}`); // 1.4142135623730951 に急速収束
36console.log(`反復回数: ${result.iterations}`); // わずか4〜5回程度
37console.log(`収束過程: ${result.history.join(" → ")}`);
この単元につながる学習ロードマップ

次に学ぶならコレ!おすすめトピック

この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元

数理モデル・概念が近い関連トピック

関連度高大学数学

固有値・固有ベクトル

行列で変換しても「向きが変わらない」特別な方向

見送り 37%即決採用 63%1/e ≈ 36.8%最高人材との遭遇確率 最大
関連度高大学数学

最適停止問題と秘書問題(37%の法則)

面接・結婚・物件探し — いつ決断すべきか?数学が導く人生の最適戦略

面積 x1辺 = √x√x√x34
関連度高中学数学

平方根と無理数

「2乗するとxになる数」を図形の面積と数直線から理解する

同じレベルで次に挑戦したいトピック

同レベル推薦大学数学

フーリエ変換と周波数分解

どんなに複雑な波も、単純なサイン波の重ね合わせに分解できる

同レベル推薦大学数学

ベイズの定理(条件付き確率と事前・事後確率)

新たな情報や証拠(エビデンス)を得て「確信度」を更新する確率論

同レベル推薦大学数学

正規分布と中心極限定理

あらゆるランダムなばらつきが最終的に収束する「釣鐘型の山」

工学・実社会での応用先でつながるトピック

工学・実践連携小学校・算数

平均値・中央値・データの活用

棒グラフを動かして、平均と中央値の違いを体で覚えよう

工学・実践連携中学数学

四分位範囲・箱ひげ図

データを並べて4等分すると、散らばり具合が一目でわかる

✨1% 排出100連ガチャ当選 63.4%爆死 36.6%1/e の法則
工学・実践連携中学数学

ガチャ確率と大数の法則(確率の心理バイアス)

「確率1%を100回引けば当たる?」余事象と二項分布が暴くスマホゲームの現実

あなたの数学力をさらに伸ばす

数学の弱点診断や算数パズルに挑戦してみませんか?

簡単な質問に答えてあなたにぴったりの学習ロードマップを発見したり、直感を試すパズルで数の面白さを体験できます。