数値計算法をゼロから学ぶ
事前に学ぶこと: 微分, 積分, 微分方程式
1なぜ数値計算法か、そして二分法
多くの方程式や積分には、答えの公式がありません:x = cos x、∫e−x²dx、あるいはほとんどの微分方程式などです。数値計算法は、必要な精度の答えを、ステップごとに計算します。
二分法は、f の符号が変わる区間 [a, b] で f(x) = 0 の根を見つけます。中点 c = (a + b)/2 を取り、符号がなお変わる側の半分を残します。
例:[1, 2] 上の f(x) = x² − 2。c₁ = 1.5 では f = 0.25 > 0 なので [1, 1.5] を残します。c₂ = 1.25 では f = −0.4375 < 0 なので [1.25, 1.5] を残します。次に c₃ = 1.375 です。
各ステップで区間は半分になるので、n ステップ後の幅は (b − a)/2ⁿ です。二分法は遅いですが、符号の変化さえあれば必ず働きます。
セルフチェック 二分法が長さ 1 の区間から始まります。10 ステップ後の区間の幅はいくらですか?
- 1/100
- 1/1024
- 1/10
- 1/20
答え: 1/1024. 毎回半分になります:1/2¹⁰ = 1/1024 ≈ 0.001。10 や 20 で割るのは、半分にすることを足し算のように扱っています。
2ニュートン–ラフソン法
ニュートン–ラフソン法は、接線を x 軸まで辿り、その交点を次の推定値とします:
xn+1 = xₙ − f(xₙ)/f′(xₙ)
f(x) = x² − 2、f′(x) = 2x、x₀ = 2 のとき:x₁ = 2 − 2/4 = 1.5、x₂ = 1.5 − 0.25/3 = 1.416667、x₃ = 1.414216。根は √2 = 1.414214 です。
根の近くでは、ニュートン法は 1 ステップごとに正しい桁数がおよそ 2 倍になります。f′(xₙ) が 0 に近いときや、出発点が根から遠いときは、失敗することがあります。
各反復値で少なくとも 6 桁を保ちましょう。早く丸めると、方法が改善しなくなります。
セルフチェック x₀ = 2 から出発する f(x) = x² − 5 のニュートン法の 1 ステップは…
- 1.75
- 2.25
- 2.2
- 2.5
答え: 2.25. f(2) = −1、f′(2) = 4 なので、x₁ = 2 − (−1)/4 = 2.25 です。引く代わりに −1/4 を足すと 1.75 になってしまいます。
3線形補間
表には、決まった点での値しかありません。線形補間は、表の隣り合う 2 点の間に直線を引きます:
y = y₁ + (y₂ − y₁)·(x − x₁)/(x₂ − x₁)
例:表に f(1) = 2.0 と f(2) = 2.6 があります。x = 1.4 では割合が 0.4 なので、f(1.4) ≈ 2.0 + 0.6·0.4 = 2.24 です。
逆補間も同様に、向きを逆にして行います:y = 2.3 となる位置を求めるには、割合は (2.3 − 2.0)/0.6 = 0.5 なので、x ≈ 1.5 です。
4台形公式とシンプソンの公式
f を a から b まで積分するには、区間を幅 h = (b − a)/n、節点 x₀, x₁, …, xₙ の n 個の短冊に分けます。
台形公式は、各短冊の曲線を直線で置き換えます。内側の節点はどれも 2 つの短冊に属するので、2 回数えます:
T = (h/2)[f₀ + 2f₁ + 2f₂ + … + 2fn−1 + fₙ]
シンプソンの公式は、3 つの節点ごとに放物線を当てはめます。n は偶数が必要です:
S = (h/3)[f₀ + 4f₁ + 2f₂ + 4f₃ + … + 4fn−1 + fₙ]
n = 2(h = 0.5)での ∫01 x² dx = 1/3 では:T = 0.25·(0 + 0.5 + 1) = 0.375、S = (0.5/3)·(0 + 1 + 1) = 0.3333 で、厳密な値と一致します。
台形公式の誤差は h² のように、シンプソンの公式の誤差は h⁴ のように小さくなります:h を半分にすると、シンプソンの公式は約 16 倍正確になります。
セルフチェック 台形公式は、節点 x₀, x₁, x₂, x₃ にどんな重みを与えますか?
- 1, 1, 1, 1
- 1, 2, 2, 1
- 1, 4, 2, 1
- 1, 4, 4, 1
答え: 1, 2, 2, 1. 両端の点は 1 つの短冊に、内側の点は 2 つの短冊に属するので、係数 h/2 とともに 1, 2, 2, 1 です。4 はシンプソンの公式の重みです。
5微分方程式のオイラー法とホイン法
y(t₀) = y₀ のもとでの y′ = f(t, y) を、刻み幅 h で時間を進めて解きます。オイラー法は、各ステップの開始点での傾きを使います:
yn+1 = yₙ + h·f(tₙ, yₙ)
ホイン法(改良オイラー法)は、オイラー法で予測し、両端での傾きを平均します:k₁ = f(tₙ, yₙ)、k₂ = f(tₙ + h, yₙ + h·k₁)、yn+1 = yₙ + (h/2)(k₁ + k₂)。
オイラー法の誤差は h に、ホイン法の誤差は h² に比例します。古典的ルンゲ–クッタ法(RK4)は 4 つの傾きを使い、h⁴ の精度をもちます。
例題y′ = y、y(0) = 1 を、オイラー法で h = 0.1 として t = 0.3 まで解き、厳密解 eᵗ と比べてください。
2y₂ = 1.1 + 0.1·1.1 = 1.21
3y₃ = 1.21 + 0.1·1.21 = 1.331
4厳密な値は e0.3 = 1.349859 なので、大域誤差は 0.0189 です。y₀ からホイン法を 1 ステップ行うと、1 + 0.05·(1 + 1.1) = 1.105 となり、e0.1 = 1.105171 と比べられます。
答え オイラー法で y(0.3) ≈ 1.331。誤差 0.019 は、h にほぼ比例して小さくなります。
6よくある間違いと試験問題
- 二分法の最初の中点をステップ 0 と数える、または区間の誤った半分を残してしまう。
- ニュートン法で、x − f/f′ の代わりに x − f′/f と書いてしまう。
- 台形公式で、内側の節点の係数 2 を忘れる、または h/2 の代わりに h を使ってしまう。
- シンプソンの公式を奇数個の短冊で使ってしまう。
- オイラー法で、ステップの終わりの傾きを使う、またはステップを 1 回少なくしてしまう。
やさしい:二分法、ニュートン法の反復、表の補間。ふつう:台形公式とシンプソンの公式、その誤差、必要な短冊の数。むずかしい:微分方程式のオイラー法、ホイン法、ルンゲ–クッタ法のステップ。
セルフチェック y′ = 2y、y(0) = 1 です。h = 0.2 でのオイラー法の 1 ステップは何を与えますか?
- 1.2
- 1.49
- 1.4
- 2.4
答え: 1.4. y₁ = 1 + 0.2·(2·1) = 1.4 です。傾きの係数 2 を忘れると 1.2 になります。1.49 は厳密な値 e0.4 です。
アプリでステップごとに学ぶアプリでステップごとに学ぶ