線形補間の計算式と近似誤差

関数 y=f(x)y=f(x) が2点 (x1,y1)(x_1,y_1),(x2,y2)(x_2,y_2) を通ることがわかっているとする。このとき,関数 f(x)f(x) を,2点を通る線分:

y=y1+y2−y1x2−x1(x−x1)y=y_1+\dfrac{y_2-y_1}{x_2-x_1}(x-x_1)

で近似する手法を線形補間と言う。

線形補間の例

線形補間のイメージ

例えば,(1,4)(1,4) と (3,8)(3,8) を通る関数の,x=2x=2 での値を線形補間すると,

y=4+8−43−1(2−1)=6y=4+\dfrac{8-4}{3-1}(2-1)=6

になります。

なお,補間とは与えられた点の間を別の関数で近似することです。2点の外側の関数値を同様に近似する場合は,補外や外挿などと言います。

線形補間の拡張

  • 折れ線グラフは,線形補間をつなげたもの(区分線形補間)です。

  • 高次元バージョンも考えられます。例えば,2変数関数 f(x,y)f(x,y) について,通る3点が与えられた場合,その3点を通る平面の方程式を使うことで線形補間できます。平面の方程式とその3通りの求め方

  • 1次関数ではなく,より一般的に多項式を使った補間であるラグランジュ補間という手法があります。

線形補間の誤差

以下,x1<x2x_1 < x_2 とします。

y=f(x)y=f(x) は C2C^2 級(二階微分可能で,二階導関数が連続)とする。このとき,線形補間の誤差の絶対値は,

(x2−x1)2M8\dfrac{(x_2-x_1)^2M}{8}

以下である。ただし,M=max⁡x1≤x≤x2∣f′′(x)∣M=\displaystyle\max_{x_1\leq x\leq x_2}|f''(x)|

ここで,線形補間の誤差 E(x)E(x) とは,関数 f(x)f(x) と近似値の差です。つまり,

f(x)−{y1+y2−y1x2−x1(x−x1)}f(x)-\left\{y_1+\dfrac{y_2-y_1}{x_2-x_1}(x-x_1)\right\}

です。この誤差(の絶対値)が上から定数で抑えられるという素敵な定理です。

誤差の上界 (x2−x1)2M8\dfrac{(x_2-x_1)^2M}{8} は

  • x1x_1 と x2x_2 が近いとき,つまり補間の範囲が狭いときに小さくなります。
  • 二階微分が全体的に小さいとき,つまり「そんなに曲がっていない」ときに小さくなります。

誤差の上界の証明

証明

x1≤x≤x2x_1\leq x\leq x_2 において近似誤差 E(x)E(x) を最大にするような xx の1つを x∗x^* とする(最大値の原理より,そのような x∗x^* は存在する)。

このとき,テイラーの定理(平均値の定理の一般形)より

E(x1)=E(x∗)+E′(x∗)(x1−x∗)+E′′(c)2(x1−x∗)2E(x_1)\\ =E(x^*)+E'(x^*)(x_1-x^*)+\dfrac{E''(c)}{2}(x_1-x^*)^2

となる cc が x1x_1 と x∗x^* の間に存在する。

ここで,線分の端点での誤差は 00 なので,E(x1)=0E(x_1)=0 である。また,E(x∗)E(x^*) は最大値なので,E′(x∗)=0E'(x^*)=0 である:

0=E(x∗)+E′′(c)2(x∗−x1)20=E(x^*)+\dfrac{E''(c)}{2}(x^*-x_1)^2

ここで,x∗x^* が x2x_2 よりも x1x_1 に近い場合,

つまり x∗−x1≤x2−x12x^*-x_1\leq\dfrac{x_2-x_1}{2} の場合は,上式より

∣E(x∗)∣≤(x2−x1)2M8|E(x^*)|\leq \dfrac{(x_2-x_1)^2M}{8}

が導かれる。一方,x∗x^* が x1x_1 よりも x2x_2 に近い場合は,テイラーの定理の式で x1x_1 のかわりに x2x_2 を使えば同じ上界が導出できる。

より一般的な定理

より一般に,ラグランジュ補間による誤差は,以下の式で評価できます:

E(x)=1(n+1)!f(n+1)(cx)∏i=0n(x−xi)E(x)=\dfrac{1}{(n+1)!}f^{(n+1)}(c_x)\displaystyle\prod_{i=0}^n(x-x_i)

ただし,xix_i たちは与えられた点の xx 座標で,cxc_x は「xix_i たちの最小値以上」で「xix_i たちの最大値以下」の実数です。

n=1n=1 とすると,さきほどの定理(よりも少し強い形)になります。

参考文献:Errors in Polynomial Interpolation