計算結果が落ち着くのか、それとも振動して壊れるのか。
数値計算における「収束」は、結果を信用できるかを判断する最も基本的な条件です。
結論
収束とは「計算条件を細かくすると数値解が一定値へ近づくこと」。
数値計算における収束とは、刻み幅や格子幅、反復回数などの計算条件を変えたときに、数値解がある値へ安定して近づくことを意味します。
例えば時間刻み $\Delta t$ を小さくしたり、格子幅 $\Delta x$ を細かくしたり、反復回数を増やしたときに、解がほぼ同じ値へ落ち着くなら、その計算は収束していると考えられます。
逆に、計算条件を変えるたびに結果が大きく変わるなら、その計算結果はまだ信用できません。
つまり収束とは、単に「計算が終わること」ではなく、計算結果が安定して近づくことです。
あるある
値は出たのに、その値を信じていいか分からない。
数値計算では、プログラムが最後まで動けば答えが出ます。しかしその値が本当に正しいかどうかは、別の問題です。
刻み幅を変えた瞬間に結果が変わることは珍しくありません。
数値計算って、値が出た瞬間は安心するけど、あとで刻み幅を変えたら普通に答えが変わることあるのよね。
そこが収束を見る理由たい。計算が終わることと、計算が信用できることは別なんよ。
なるほど。刻みを細かくしたときに答えが落ち着くかどうかを見るのね。
本文
収束は「計算結果が落ち着くか」を見る指標。
1) 収束の基本概念
数学では、数列 $\{x_n\}$ がある値 $a$ に近づくとき
$x_n \to a$
と書き、これを収束と呼びます。
数値計算でも同じ考え方が使われます。ただし、近づく対象は反復回数だけではありません。
- 反復回数
- 時間刻み $\Delta t$
- 格子幅 $\Delta x$
これらを変えたときに解が落ち着くかどうかを確認します。
収束確認の視点
反復回数 → 解が変化しなくなる
時間刻み → $\Delta t$ を小さくしても解がほぼ同じ
格子幅 → $\Delta x$ を細かくしても解が変わらない
2) 反復法の収束
多くの数値計算では反復法が使われます。例えば解を更新する形で
$x^{(k+1)} = g(x^{(k)})$
のように計算を進めます。
このとき更新量が十分小さくなれば収束と判断します。
典型的な条件は
$|x^{(k+1)}-x^{(k)}| < \varepsilon$
です。
3) 時間刻みと収束
時間発展問題では時間刻みが重要です。
例えば陽的オイラー法では
$u^{n+1} = u^n + \Delta t f(u^n,t^n)$
のように解を更新します。
もし $\Delta t$ が大きすぎると、解が振動したり発散することがあります。
そこで $\Delta t$ を小さくして計算をやり直し、解が落ち着くかを確認します。
つまり、$\Delta t=0.1$ で出た答えだけ見ても意味がなくて、$\Delta t=0.05$ とかでも計算して比較する必要があるのね。
そうたい。刻みを半分にしても答えがほとんど変わらんなら、その解はかなり信用できるとよ。
4) 格子収束
偏微分方程式を解くときは空間も離散化します。
格子幅 $\Delta x$ が粗いと、流れや温度分布を正しく表現できません。
そこで格子を細かくして再計算し、結果が変わらなくなるかを確認します。
これを格子収束またはメッシュ収束と呼びます。
5) 安定と収束の違い
数値計算では安定性と収束はよく混同されますが、意味は異なります。
安定
誤差が計算途中で暴走しない。
収束
刻みを細かくすると真の解へ近づく。
整合性
離散化された式が元の方程式を正しく近似している。
数値解析では、整合性と安定性が満たされると収束するという重要な結果があります。
6) 計算例
時間刻みを変えて計算した結果が次のようになったとします。
$\Delta t=0.10 \quad u=1.42$
$\Delta t=0.05 \quad u=1.36$
$\Delta t=0.025 \quad u=1.33$
$\Delta t=0.0125 \quad u=1.32$
刻みを細かくするほど解が一定値に近づいています。
この場合、解はおよそ
$u \approx 1.32$
へ収束していると考えられます。
7) よくあるつまずき
つまずき1
値が出れば正しいと思ってしまう。
つまずき2
安定と収束を同じ意味で使う。
つまずき3
刻み幅を変えて結果を確認しない。
テンプレ
収束確認の基本手順。
収束確認の手順
- 刻み幅または格子幅を決めて計算する
- 刻み幅を半分にして再計算する
- 結果の差を比較する
- 差が十分小さくなれば収束と判断する
落とし穴
収束を「計算が終わること」だと思う。
数値計算でよくある誤解は、プログラムが最後まで動けば計算が成功したと思ってしまうことです。
しかし収束していない計算では、結果は刻み幅に強く依存します。
そのため、刻み幅や格子幅を変えて結果が安定するかを必ず確認する必要があります。
締め
収束とは、数値解が安定して近づくこと。
収束を見るっていうのは、答えが出るかどうかやなくて、その答えが落ち着くかどうかを見る作業たい。
つまり刻み幅を変えても答えがほとんど変わらないなら、その計算結果は信用できるってことね。
そうたい。数値計算は、答えを出すより先に「答えを疑う」ところから始まるとよ。