数値計算は、近似解を求めるためのアルゴリズムです。ニュートン・ラフソン法は f(x)=0f(x)=0 のような方程式の根を求めるために使われ、オイラー法とルンゲ=クッタ法は微分方程式の解を近似するために使われます。

違いだけを手短に言うと、ニュートン・ラフソン法は xx の推定値を更新する方法で、オイラー法とルンゲ=クッタ法は時間方向に解を1ステップずつ進める方法です。うまく機能するかどうかは、適切な初期値、使える導関数、あるいは問題に対して十分小さい刻み幅 hh などの条件に左右されます。

それぞれの数値計算法は何に使うのか

ニュートン・ラフソン法:方程式の根を求める

f(x)=0f(x)=0 を満たす xx を求めたいとき、ニュートン・ラフソン法では接線を使って推定値を更新します。

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

考え方はシンプルです。根の近くでグラフが滑らかなら、接線はその近傍での線形近似になり、その切片は現在の点よりもよい推定値になることがあります。

この方法は、ff が微分可能で、f(xn)0f'(x_n) \ne 0 であり、初期値がすでに単純根の近くにあるときにうまく働くことが多いです。これらの条件が崩れると、反復が止まったり、根から離れたり、発散したりすることがあります。

たとえば f(x)=x22f(x)=x^2-2x0=1.5x_0=1.5 とすると、

x1=1.51.5222(1.5)=1.4167x_1 = 1.5 - \frac{1.5^2 - 2}{2(1.5)} = 1.4167

さらにもう1回進めると約 1.41421.4142 となり、すでに 2\sqrt{2} にかなり近い値です。

オイラー法:1つの傾きで1ステップ進む

初期値問題

y=f(t,y),y(t0)=y0,y' = f(t,y), \qquad y(t_0)=y_0,

に対して、オイラー法は現在の傾きを使って次へ進みます。

yn+1=yn+hf(tn,yn)y_{n+1} = y_n + h f(t_n, y_n)

これは最も単純な近似です。今わかっている傾きを使って、刻み幅 hh だけ前に進みます。そのためオイラー法は学びやすく実装もしやすい一方で、hh が大きすぎたり、解の変化が急だったりすると誤差がすぐ大きくなることがあります。

ルンゲ=クッタ法:1ステップ内で複数回傾きを調べる

ルンゲ=クッタ法は、同じ1ステップの中で傾きの情報を複数回使うことで、オイラー法を改良したものです。初学者向けの授業で「ルンゲ=クッタ法」というと、古典的4次法 RK4 を指すことがよくあります。

k1=f(tn,yn),k2=f(tn+h2,yn+h2k1),k_1 = f(t_n, y_n), \qquad k_2 = f\left(t_n + \frac{h}{2}, y_n + \frac{h}{2}k_1\right), k3=f(tn+h2,yn+h2k2),k4=f(tn+h,yn+hk3)k_3 = f\left(t_n + \frac{h}{2}, y_n + \frac{h}{2}k_2\right), \qquad k_4 = f(t_n + h, y_n + hk_3) yn+1=yn+h6(k1+2k2+2k3+k4)y_{n+1} = y_n + \frac{h}{6}(k_1 + 2k_2 + 2k_3 + k_4)

RK4 は複数の傾きの推定値を重み付き平均するので、同じ刻み幅なら通常はオイラー法よりも曲線をずっとよく追跡できます。

例題:同じ常微分方程式でオイラー法とルンゲ=クッタ法を比較する

次を考えます。

y=y,y(0)=1y' = y, \qquad y(0)=1

刻み幅 h=0.1h=0.1 で1ステップ進めて、y(0.1)y(0.1) を近似します。

オイラー法の1ステップ

t=0t=0 で現在の値は y0=1y_0=1 なので、傾きは

f(0,1)=1f(0,1)=1

です。したがってオイラー法では

y1=1+0.1(1)=1.1y_1 = 1 + 0.1(1) = 1.1

となります。

RK4 の1ステップ

同じ問題に RK4 を使うと、

k1=1k_1 = 1 k2=1+0.12(1)=1.05k_2 = 1 + \frac{0.1}{2}(1) = 1.05 k3=1+0.12(1.05)=1.0525k_3 = 1 + \frac{0.1}{2}(1.05) = 1.0525 k4=1+0.1(1.0525)=1.10525k_4 = 1 + 0.1(1.0525) = 1.10525

したがって

y1=1+0.16(1+2(1.05)+2(1.0525)+1.10525)y_1 = 1 + \frac{0.1}{6}(1 + 2(1.05) + 2(1.0525) + 1.10525) y11.105170833y_1 \approx 1.105170833

この方程式の厳密解の値は e0.11.105170918e^{0.1} \approx 1.105170918 なので、RK4 の1ステップはオイラー法よりかなり近い値を与えています。

ここでの大事なポイントはそれです。オイラー法は左端の傾きだけを使います。一方 RK4 はステップの途中で傾きがどう変わるかも見ているので、局所的な振る舞いをよりよく捉えられます。

ニュートン・ラフソン法、オイラー法、ルンゲ=クッタ法の使い分け

非線形方程式を解きたくて、導関数を計算または近似できるなら、ニュートン・ラフソン法を使います。常微分方程式をステップごとに解く基本的な考え方をつかみたい、あるいは簡単な基準法がほしいなら、オイラー法が向いています。

問題設定を変えずに実用的に精度を上げたいなら、ルンゲ=クッタ法、特に RK4 が有力です。ただし ODE が硬い場合は、オイラー法や古典的 RK4 が常によい選択とは限りません。方程式に合った手法を選ぶ必要があります。

数値計算でよくあるミス

問題の種類を取り違える

ニュートン・ラフソン法は方程式の根を求める方法です。オイラー法とルンゲ=クッタ法は微分方程式のための方法です。手法の系統を間違えると、計算を始める前から設定がずれています。

いつでも収束すると考えてしまう

ニュートン・ラフソン法は、初期値が悪かったり、反復点の近くで f(x)f'(x) が非常に小さかったりすると失敗することがあります。オイラー法や RK 法も、刻み幅が問題に対して大きすぎると不安定な振る舞いをすることがあります。

刻み幅を軽く考える

ODE の数値解法では、刻み幅 hh は手法の一部であって、後から付け足す細部ではありません。hh を小さくすると精度が上がることは多いですが、その分計算コストは増えますし、難しい問題では単に刻み幅を小さくするだけでなく、硬い方程式向けの手法が必要になることもあります。

答えが近似値だということを忘れる

桁数の多い数値結果が、必ずしも信頼できるとは限りません。大切なのは、その近似が安定しているか、収束しているか、そして目的に対して十分な精度があるかです。

数値計算はどこで使われるか

数値計算は、モデル自体は明確でも、厳密な記号解を求めるのが面倒だったり不可能だったりする場面で使われます。物理、工学、最適化、金融、科学技術計算などがその代表です。

共通するのは、理論そのものより実用性が重視されることです。必要な判断に対して十分な精度の答えがほしいので、収束性、刻み幅の影響、初期値への感度を確認することは、公式を書くのと同じくらい重要です。

似た問題で練習してみよう

同じ ODE の例で、h=0.1h=0.1 の代わりに h=0.05h=0.05 を使い、オイラー法の答えと RK4 の答えをもう一度比べてみてください。次に f(x)=x23f(x)=x^2-3 に対して、x0=2x_0=2 からニュートン・ラフソン法を試し、反復値がどれくらい速く 3\sqrt{3} に近づくかを確かめてみましょう。

問題の解き方でお困りですか?

問題をアップロードすると、検証済みのステップバイステップ解答が数秒で届きます。

GPAI Solver を開く →