タグ: Richardson外挿

  • Richardson外挿、粗い計算と細かい計算を組み合わせて誤差を減らす

    Richardson外挿、粗い計算と細かい計算を組み合わせて誤差を減らす

    積分の計算で区間を細かく分けると、答えが少しずつ変わっていく。そのとき、前に使った粗い分割の答えにも使い道があります。細かい分割の答えとの差に、まだ残っている誤差の手掛かりが含まれているためです。

    Richardson外挿(リチャードソン外挿)は、刻み幅と誤差の関係を利用し、異なる細かさの計算結果を組み合わせて精度を上げる方法です。ここでは台形則による積分を例に、なぜ「細かい答えを4倍して、粗い答えを引く」のかを追います。効き目を決めるのは、計算回数だけでなく、誤差の減り方が想定に合っているかどうかです。

    簡単にまとめると?

    • 滑らかな関数の台形則では、刻み幅を半分にすると主要な誤差が約4分の1になります。その関係を使うと、未知の誤差係数を消せます。
    • 粗い結果をTn、分割数を倍にした結果をT2nとすると、外挿値は(4T2n−Tn)/3です。これは同じ点を使うSimpson則に一致します。
    • 端点で傾きが発散する関数や、丸め・測定ノイズが支配する計算へ、同じ改善率をそのまま期待できません。分割を重ねたときの変化も調べます。

    台形を細かくしたとき、何が残るのか

    区間[a,b]をn等分し、隣り合う点での関数値を直線で結ぶ。各部分の下にできる台形の面積を足したものが複合台形則です。刻み幅をh=(b−a)/nとすると、両端の関数値だけ半分の重みを付け、内部の値と一緒に足してhを掛けます。[1]

    ここで重要なのは、直線と本来の曲線の間に隙間が残ることです。関数が区間の両端を含めて十分滑らかな場合、台形則の結果T(h)は、真の積分値Iに対して次の形で表せます。以下ではhの4乗の項まで扱える滑らかさを仮定します。[1][2]

    T(h) = I + c₂h² + O(h⁴)

    c₂は関数や積分区間で決まる係数で、同じ問題の刻み幅を変えても同じです。O(h⁴)は、hが十分小さいときに残りの大きさをhの4乗に比例する量で抑えられる、という意味です。先頭のc₂がゼロでなければ、hを半分にした主要な誤差はc₂h²/4になります。

    4倍して引くと、未知の係数が消える

    刻み幅がhの結果T(h)と、h/2の結果T(h/2)を並べます。後者を4倍すると、主要な誤差は4×c₂h²/4=c₂h²です。そこからT(h)を引けば、c₂の値を知らなくても誤差の先頭項が相殺されます。一方、真の値の部分は4I−I=3Iなので、最後に3で割ります。

    R = [4T(h/2) − T(h)] / 3

    こうして残る誤差はO(h⁴)になります。係数が消えない通常の場合、刻み幅をさらに半分にしたときの誤差は、およそ16分の1です。二つの値をただ平均するのではなく、誤差の形に合わせた重みを付けています。[2][3]

    台形則では、この1段の外挿がSimpson則と一致します。[1][2] 細かい側の格子には、粗い側の点も含まれています。粗い計算の値を保存しておけば、新しく関数を計算するのは各区間の中点だけです。例えば8分割から16分割へ進めるなら、9点の既存値に8点を追加し、合計17点の値で外挿まで行えます。

    同じ17点でも、答えの使い方で精度が変わる

    独自計算として、0から1までのexの積分を求めました。真の値はe−1≒1.718281828459です。台形則では8分割で約1.720518592164、16分割で約1.718841128580になりました。16分割だけを使った絶対誤差は約5.59×10−4です。

    この二つから外挿すると、結果は約1.718281974052、絶対誤差は約1.46×10−7になります。関数値の取得点を17点より増やしたわけではありません。粗い格子の情報も使うことで、16分割の台形則に残っていた偏りを大幅に小さくできました。

    さらに16分割と32分割を組み合わせた外挿では、誤差は約9.10×10−9になり、先ほどの約16分の1です。図の上段は、この減り方を示しています。数値は十進60桁で計算し、80桁での再計算と、Simpson則の重みを直接足す別の式で照合しました。実測データの精度を評価したものではありません。

    区間0から1での独自計算。上段のexp(x)は1段の外挿で台形則より誤差が速く減る。下段の平方根xでは誤差は小さくなるが、外挿後も同じ速さに改善しない。横軸は細かい側の分割数、縦軸は絶対誤差で両軸対数目盛。
    同じ細かい格子の値を使う台形則(青)と、粗い格子も使った1段の外挿(赤)の比較。上下で縦軸の範囲は異なる。真の値が分かる二つの関数による独自計算。

    端点が滑らかでないと、4という重みが合わない

    同じ区間で、関数を√xへ変えてみます。真の積分値は2/3ですが、x=0へ近づくと傾き1/(2√x)が発散します。先ほど使った、端点まで滑らかな関数の誤差展開をそのまま適用できません。

    8分割と16分割の外挿で得た絶対誤差は約0.00127、16分割と32分割では約0.000448でした。小さくはなっていますが、比は約2.83で、16倍の改善ではありません。図の下段でも、赤い線は青い線より下にあるものの、滑らかなexのときのように急には下がりません。

    この結果は「外挿が一切役立たない」という意味ではありません。4倍して引く操作が狙っているのはh²に比例する誤差なので、その形が主要な誤差を表していなければ、期待した次数への改善が起きないということです。例えば√xの積分なら、x=t²と置くと、積分する関数は2t²になり、端点の問題を取り除けます。計算を細かくする前に、変数変換が使えるか考える余地があります。

    外挿した値と、誤差の見積もりを分ける

    真の値が分からない問題では、Tn、T2n、T4nの三つを比べると手掛かりが増えます。h²の項が支配していれば、差の大きさ|Tn−T2n|と|T2n−T4n|の比は約4へ近づきます。比が大きく変動するなら、まだ粗すぎる、係数がたまたま小さい、端点に問題がある、といった可能性を調べます。

    同じ近似から、|T2n−Tn|/3は、細かい側の台形則T2nに残る誤差の目安になります。これは外挿後のRの誤差そのものではありません。exの8/16分割なら、この値は約0.000559で、T16の誤差に近く、Rの誤差約0.000000146とは桁が違います。

    また、各関数値に測定ノイズがある場合や、非常に小さい差を有限桁の数で計算する場合は、差に含まれるものが台形近似の誤差だけではなくなります。細かくしても値が安定しない段階では、外挿を重ねる前に、入力値と数値計算の精度を見直すことが必要です。Richardson外挿の使いどころは、前の計算を捨てず、誤差が規則的に減っている範囲で次の計算へ生かすことにあります。

    出典

    1. NIST Digital Library of Mathematical Functions、§3.5 Quadrature、(i)〜(iii)。台形則、Simpson則、滑らかさを仮定した誤差展開。2026年10月25日保存。
    2. Tobin A. Driscoll・Richard J. Braun、Fundamentals of Numerical Computation, 5.6 Numerical integration、5.6.1〜5.6.3。外挿と格子点の再利用。取得時点のWeb版。
    3. UBC CLP-2 Integral Calculus、Richardson Extrapolation。刻み幅を半分にした結果の組合せ。数値例と図は本文に記した独自計算。