数学の問題を解いていて、「この方程式、どうやって解けばいいの?」と困ったことはありませんか?
特に複雑な方程式になると、解の公式が使えなかったり、手計算では無理だったりすることがよくあります。
そんなときに活躍するのがニュートン法です。
ニュートン法は、方程式の解を驚くほど速く、正確に近似できる計算方法なんですよ。300年以上前に考案されたにもかかわらず、今でもコンピュータや電卓の中で活躍している優れたアルゴリズムです。
この記事では、ニュートン法の基本的な仕組みから実際の使い方まで、分かりやすく解説していきますね。
ニュートン法って何?基本的な考え方

方程式の解を近似的に求める方法
ニュートン法(Newton’s method)は、方程式 f(x) = 0 の解を数値計算によって近似的に求めるアルゴリズムです。
「ニュートン・ラフソン法」(Newton-Raphson method)とも呼ばれています。
例えば、√2を求めたいとき、x² – 2 = 0 という方程式を解けばいいわけですが、ニュートン法を使えば小数点以下何桁でも正確に計算できます。
接線を使った賢いアイデア
ニュートン法の基本的なアイデアはとてもシンプルです。
関数のグラフ上のある点で接線を引き、その接線とx軸の交点を次の近似値とする、という操作を繰り返すんです。
最初は大まかな推測から始めても、この操作を何回か繰り返すだけで、驚くほど正確な解に近づいていきます。
ニュートン法の仕組みを図で理解しよう
ステップ1:初期値を決める
まず、解の近くにありそうな適当な値 x₀ を選びます。これを初期値と呼びます。
関数 f(x) のグラフを大まかに描いて、「だいたいこの辺りに解がありそうだな」という値を選べばOKです。
ステップ2:接線を引く
点 (x₀, f(x₀)) における関数 f(x) の接線を引きます。
この接線の方程式は、微分を使って次のように書けます:
y = f'(x₀)(x – x₀) + f(x₀)
ここで f'(x₀) は x₀ における導関数(微分係数)です。
ステップ3:接線とx軸の交点を求める
この接線がx軸と交わる点のx座標を x₁ とします。
これが次の近似値になります。普通、x₁ は x₀ よりも真の解に近くなっているんですよ。
ステップ4:繰り返す
今度は x₁ を使って同じ操作を繰り返し、x₂ を求めます。
さらに x₂ から x₃ を、x₃ から x₄ を…というふうに、どんどん精度の高い近似値が得られます。
ニュートン法の計算式
漸化式
ニュートン法の計算は、次の漸化式に従って行います。
x_{n+1} = x_n – f(x_n) / f'(x_n)
この式さえあれば、ニュートン法の計算ができます。
式の意味を確認しましょう:
- x_n は現在の近似値
- x_{n+1} は次の近似値
- f(x_n) は x_n における関数の値
- f'(x_n) は x_n における導関数の値
計算の終了条件
では、いつ計算を止めればいいのでしょうか?
一般的には、次のいずれかの条件を使います:
条件1:差が十分小さくなったとき
|x_{n+1} – x_n| < ε
ε(イプシロン)は許容誤差で、例えば 0.0001 のような小さな値を設定します。
条件2:連続する2つの値が一致したとき
小数点以下6桁まで同じになったら終了、といった基準を設けることもあります。
具体例で理解しよう:√2を計算する

問題設定
√2 の値を求めてみましょう。
√2 = x とおくと、x² = 2 なので、x² – 2 = 0 を解けばいいですね。
つまり、f(x) = x² – 2 として、f(x) = 0 の解を求めます。
導関数を求める
ニュートン法には導関数が必要です。
f(x) = x² – 2 を微分すると:
f'(x) = 2x
漸化式を作る
ニュートン法の式に代入します:
x_{n+1} = x_n – (x_n² – 2) / (2x_n)
これを整理すると:
x_{n+1} = (x_n + 2/x_n) / 2
この形を見ると、「現在の値と、2をその値で割った値の平均」という意味になりますね。
実際に計算してみる
初期値を x₀ = 2 としてみましょう(適当な値で大丈夫です)。
1回目:
x₁ = (2 + 2/2) / 2 = (2 + 1) / 2 = 1.5
2回目:
x₂ = (1.5 + 2/1.5) / 2 = (1.5 + 1.333…) / 2 ≈ 1.41667
3回目:
x₃ = (1.41667 + 2/1.41667) / 2 ≈ 1.41421
4回目:
x₄ ≈ 1.41421356
たった4回の計算で、√2 ≈ 1.41421356 という非常に正確な値が得られました!
真の値と比べると、小数点以下8桁まで正確です。
ニュートン法の驚異的な速さ:二次収束
収束速度とは
ニュートン法の最大の特徴は、その収束の速さにあります。
ニュートン法は二次収束という性質を持っていて、1回の計算ごとに正確な桁数がほぼ2倍になります。
二次収束の威力
例えば、初期値の誤差が 10⁻¹ (0.1くらい)だとします。
- 1回目の計算後: 誤差が 10⁻² に
- 2回目の計算後: 誤差が 10⁻⁴ に
- 3回目の計算後: 誤差が 10⁻⁸ に
- 4回目の計算後: 誤差が 10⁻¹⁶ に
わずか4回で、倍精度浮動小数点数の限界に達してしまいます。
この速さは、他の多くの数値計算法(二分法など)と比べて圧倒的です。
ニュートン法が失敗する場合もある
常に成功するわけではない
ニュートン法は素晴らしいアルゴリズムですが、残念ながら万能ではありません。
場合によっては解に収束しなかったり、間違った解に収束したりすることがあります。
失敗する典型的なケース
ケース1:導関数がゼロになる場合
f'(x_n) = 0 になると、漸化式の分母がゼロになって計算できなくなります。
ケース2:初期値が悪い場合
初期値の選び方が悪いと、解から遠ざかってしまったり、振動して収束しなかったりします。
ケース3:極値や変曲点が近くにある場合
関数に極大値、極小値、変曲点などがあると、接線が予想外の場所を指してしまい、うまく収束しないことがあります。
対策
このような失敗を防ぐには:
- グラフを描いて、解の位置を大まかに把握してから初期値を選ぶ
- 計算の最大回数を設定して、無限ループを防ぐ
- 二分法など他の方法と組み合わせて使う
といった工夫が有効です。
実際のプログラム例

Pythonでの実装
ニュートン法をPythonで実装してみましょう。
def newton_method(f, f_prime, x0, epsilon=0.0001, max_iter=100):
"""
ニュートン法で方程式の解を求める
f: 方程式の関数
f_prime: fの導関数
x0: 初期値
epsilon: 許容誤差
max_iter: 最大反復回数
"""
x = x0
for i in range(max_iter):
# 次の近似値を計算
x_next = x - f(x) / f_prime(x)
# 収束判定
if abs(x_next - x) < epsilon:
print(f"{i+1}回の反復で収束しました")
return x_next
x = x_next
print("最大反復回数に達しました")
return x
# √2を求める例
def f(x):
return x**2 - 2
def f_prime(x):
return 2*x
result = newton_method(f, f_prime, x0=2.0)
print(f"√2 ≈ {result}")
このプログラムを実行すると、数回の反復で √2 の近似値が得られます。
ニュートン法の実用例
平方根の計算
電卓やコンピュータで平方根を計算するとき、内部ではニュートン法が使われていることが多いです。
実は、昔のバビロニア時代にも、ニュートン法と本質的に同じ方法が使われていたと考えられています。
最適化問題
ニュートン法は、関数の最小値や最大値を求める最適化問題にも応用できます。
f'(x) = 0 となる点(極値)を探すことで、関数の最小値や最大値が見つかります。
例えば:
- 物流での最短経路の計算
- 金融工学でのポートフォリオ最適化
- 機械学習での損失関数の最小化
といった場面で活用されています。
工学での応用
構造解析や電気回路の解析など、工学の様々な分野でニュートン法が使われています。
非線形方程式を解く必要がある場面は非常に多いため、ニュートン法は必須のツールなんです。
コンピュータビジョン
自動運転技術や画像認識では、カメラから得られた大量のデータを処理して「これは歩行者か、電柱か」といった判断をします。
この処理の裏側でも、ニュートン法のような最適化アルゴリズムが活躍しています。
ニュートン法の歴史
考案者たち
ニュートン法という名前は、物理学者アイザック・ニュートン(1643-1727)に由来します。
ニュートンは1669年頃にこの方法の基礎となるアイデアを発表しましたが、現代の形に整理したのはジョゼフ・ラフソン(1648-1715)だと言われています。
そのため「ニュートン・ラフソン法」とも呼ばれるんですね。
現代への発展
その後、数学者たちがニュートン法を改良し続けてきました。
- チェビシェフによる3次近似法
- 準ニュートン法(ヤコビ行列が不要な方法)
- 区間ニュートン法
など、様々なバリエーションが開発されています。
2019年には、300年ぶりにニュートン法の大幅な改良が発表され、話題になりました。
ニュートン法の限界と注意点
必要な条件
ニュートン法を使うには、いくつかの条件が必要です:
- 関数 f(x) が微分可能であること
- 導関数 f'(x) が計算できること
- 初期値が解に比較的近いこと
- 計算範囲で f”(x) の符号が一定であること
これらの条件が満たされない場合、別の方法を検討する必要があります。
二分法との比較
二分法という別の数値計算法と比べてみましょう。
ニュートン法の長所:
- 収束が非常に速い(二次収束)
- 少ない計算回数で高精度の解が得られる
ニュートン法の短所:
- 導関数の計算が必要
- 初期値の選び方に注意が必要
- 常に収束するとは限らない
二分法の長所:
- 確実に収束する
- 導関数が不要
- 初期値の選び方が比較的自由
二分法の短所:
- 収束が遅い(一次収束)
- 区間を指定する必要がある
実務では、状況に応じて両方を使い分けたり、組み合わせたりします。
多変数への拡張
より複雑な問題へ
ニュートン法は、1変数だけでなく、多変数の方程式系にも拡張できます。
例えば、連立方程式:
- f₁(x, y) = 0
- f₂(x, y) = 0
を同時に解きたい場合、ニュートン法を一般化して使うことができます。
ヤコビ行列の登場
多変数版では、導関数の代わりにヤコビ行列というものを使います。
計算は複雑になりますが、基本的なアイデアは1変数の場合と同じです。
まとめ
ニュートン法は、方程式 f(x) = 0 の解を高速に近似できる反復法です。
基本的な仕組み:
- 初期値 x₀ から始めて、接線とx軸の交点を次々と求めていく
- 漸化式 x_{n+1} = x_n – f(x_n)/f'(x_n) を使って計算する
最大の特徴:
- 二次収束という驚異的な速さで解に近づく
- 正確な桁数が1回の反復でほぼ2倍になる
注意すべき点:
- 常に収束するわけではない
- 初期値の選び方が重要
- 導関数が計算できる必要がある
実用例:
- 平方根などの計算
- 最適化問題(機械学習、金融工学、物流など)
- 工学での非線形方程式の求解
- コンピュータビジョンや自動運転技術
ニュートン法は300年以上前に考案されたにもかかわらず、今でも現役で活躍している素晴らしいアルゴリズムです。
電卓やコンピュータが複雑な計算を瞬時に行えるのは、こうした数値計算法のおかげなんですね。
数学の美しさと実用性が見事に結びついた、まさに「使える数学」の代表例と言えるでしょう。
もし数値計算に興味を持ったら、ぜひ実際にプログラムを書いて、ニュートン法を動かしてみてください。数回の計算で答えに近づいていく様子は、なかなか感動的ですよ!


コメント