logo

多項式補間 📂数値解析

多項式補間

定義 1

異なるx0,,xnx_{0} , \cdots , x_{n}のデータ(x0,y0),,(xn,yn)(x_{0}, y_{0}) , \cdots , (x_{n} , y_{n})について、p(xi)=yip (x_{i} ) = y_{i}degpn\deg p \le nを満たす多項式関数pp多項式補間polynomial Interpolationという。

定理

存在性と一意性

  • [1]: 与えられたデータに対し、 ppは一意に存在する。

ラグランジュの公式

  • [2]: pn(x)=i=0nyili(X)p_{n} (x) = \sum_{i=0}^{n} y_{i} l_{i} (X)

ニュートンの差分公式

  • [3]: pn(x)=f(x0)+i=1nf[x0,,xi]j=0i1(xxj)p_{n} (x) = f(x_{0}) + \sum_{i=1}^{n} f [ x_{0} , \cdots , x_{i} ] \prod_{j=0}^{i-1} (x - x_{j} )

誤差解析

  • [4]: (n+1)(n+1)回微分可能なf:RRf : \mathbb{R} \to \mathbb{R}とあるξH{x0,,xn}\xi \in \mathscr{H} \left\{ x_{0} , \cdots , x_{n} \right\}に対し、ffの多項式補間pnp_{n}はあるtRt \in \mathbb{R}に対して次を満たす。f(t)pn(t)=(tx0)(txn)(n+1)!f(n+1)(ξ)\displaystyle f(t) - p_{n} (t) = {{ (t - x_{0}) \cdots (t - x_{n}) } \over { (n+1)! }} f^{(n+1)} ( \xi )

  • H{a,b,c,}\mathscr{H} \left\{ a,b,c, \cdots \right\}a,b,c,a,b,c, \cdotsを含む最小の区間を表す。

説明

多項式補間は韓国語で多項式補間法と簡化される。

条件 degpn\deg p \le n

20190403\_105653.png

degpn\deg p \le nという条件は、ppdegp=n\deg p = nを満たす保証が常にあるわけではないことを意味する。例えばn=2n=2の時、上のように3点が一直線上にある場合、(n+1)=3(n+1)=3個の点を通るp2(x)=a2x2+a1x+a0p_{2} (x) = a_{2} x^{2} + a_{1} x + a_{0}は存在しないが、それよりも低い次数のp1(x)=a1x+a0p_{1} (x) = a_{1} x + a_{0}は存在する。これは実際にp2(x)=a2x2+a1x+a0p_{2} (x) = a_{2} x^{2} + a_{1} x + a_{0}を見つけたがa2=0a_{2} = 0の場合を意味する。

ラグランジュの公式とニュートンの差分公式は同じである

公式[2]と[3]は違うように見えても、実際には[1]によって同じであることがわかる。本質的に2つの公式の違いはpnp_{n}をどう表すかの差に過ぎず、機能的な違いは新しいデータが追加された時にニュートンの差分公式が更新しやすいという点だけである。

実際の関数との誤差

定理[4]は、ある関数ffを補間するpnp_{n}ffとどの程度違うかを示す。通常の場合には(n+1)!(n+1)!の発散速度は非常に速いため、データが多ければ多いほど補間pnp_{n}の正確性は上がる。しかし、この公式は特に収束性を論じるわけではないことに注意が必要だ。簡単な例でttH{x0,,xn}\mathscr{H} \left\{ x_{0} , \cdots , x_{n} \right\}から非常に遠い場所にある場合を考えることができる。また、ffがそれほど良くなくて微分するたびに値が大きくなり、それが更に(n+1)!(n+1)!の発散速度よりも速い場合、どんなに変になるかだってある。

証明

[1]

戦略: (n+1)(n+1)個の連立方程式を行列で表し、逆行列の存在性と一意性を同時に持ってくる。


全てのi=0,,ni = 0, \cdots , nに対してyi=pn(xi)=a0+a1xi++anxiny_{i} = p_{n} (x_{i}) = a_{0} + a_{1} x_{i} + \cdots + a_{n} x_{i}^{n}を満たすpnp_{n}の係数a0,a1,,ana_{0} , a_{1} , \cdots , a_{n}が一意であることを示せば良い。 y:=[y0y1yn],X:=[1x0x0n1x1x1n1xnxnn],a:=[a0a1an] \mathbf{y} := \begin{bmatrix} y_{0} \\ y_{1} \\ \vdots \\ y_{n} \end{bmatrix}, X := \begin{bmatrix} 1 & x_{0} & \cdots & x_{0}^{n} \\ 1 & x_{1} & \cdots & x_{1}^{n} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{n} & \cdots & x_{n}^{n} \end{bmatrix} , \mathbf{a} := \begin{bmatrix} a_{0} \\ a_{1} \\ \vdots \\ a_{n} \end{bmatrix} と定義し、連立方程式を行列で表すと [y0y1yn]=[1x0x0n1x1x1n1xnxnn][a0a1an] \begin{bmatrix} y_{0} \\ y_{1} \\ \vdots \\ y_{n} \end{bmatrix} = \begin{bmatrix} 1 & x_{0} & \cdots & x_{0}^{n} \\ 1 & x_{1} & \cdots & x_{1}^{n} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{n} & \cdots & x_{n}^{n} \end{bmatrix} \begin{bmatrix} a_{0} \\ a_{1} \\ \vdots \\ a_{n} \end{bmatrix} 今、y=Xa\mathbf{y} = X \mathbf{a}を満たす解a\mathbf{a}を見つける問題に変わった。

ヴァンデルモンド行列の行列式: XXの行列式はdetX=1i<jn(xjxi)\displaystyle \det X = \prod_{1 \le i < j \le n } (x_{j} - x_{i})

仮定からx0,,xnx_{0} , \cdots , x_{n}は異なるのでdetX0\det X \ne 0であり、X1X^{-1}が存在する。したがって、a=X1y\mathbf{a} = X^{-1} \mathbf{y}も存在する。一方で、与えられた行列に対する逆行列は一意なので、a\mathbf{a}も一意である。

[2]

クロネッカーデルタ関数で見る。

[3]

差分そのままを使って正直に計算する。

[4]

戦略: 新しいダミー関数を定義し、それらの微分可能性を利用して直接的な計算を回避する。設定が複雑なので、実際には後ろから理解するほうが楽である。


Claim: E(x):=f(x)pn(X)E (x) := f(x) - p_{n} (X)に対して次が成立する。 E(t)=(tx0)(txn)(n+1)!f(n+1)(ξ) E(t) = {{ (t - x_{0}) \cdots (t - x_{n}) } \over { (n+1)! }} f^{(n+1)} ( \xi )


Part 1.

まず、ttがノードポイントx0,,xnx_{0} , \cdots , x_{n}と同じなら自明に成立するので、ttがこれらのノードポイントと異なると仮定する。 Ψ(x):=(xx0)(xx1)(xxn)G(x):=E(x)Ψ(x)Ψ(t)E(t) \begin{align*} \Psi (x) :=& (x - x_{0} ) (x - x_{1}) \cdots (x - x_{n}) \\ G (x) :=& E(x) - {{ \Psi (x) } \over { \Psi (t) }} E(t) \end{align*} 上記のように新しい関数を定義すると、ffpnp_{n}Ψ\Psi(n+1)(n+1)回微分可能であるため、GG(n+1)(n+1)回微分可能である。


Part 2.

x=xix = x_{i}GGに代入するとE(xi)=f(xi)pn(xi)=0E(x_{i}) = f(x_{i}) - p_{n} (x_{i}) = 0であり、Ψ(xi)=0\Psi (x_{i} ) = 0なので G(xi)=E(xi)Ψ(xi)Ψ(t)E(t)=0 G(x_{i}) = E(x_{i} ) - {{ \Psi (x_{i}) } \over { \Psi (t) }} E(t) = 0 x=tx = tGGに代入するとΨ(t)Ψ(t)=1\displaystyle {{ \Psi (t) } \over { \Psi (t) }} = 1なので G(t)=E(t)E(t)=0 G(t) = E(t) - E(t) =0 したがって、GG(n+2)(n+2)個の異なる零点x0,,xn,tx_{0} , \cdots , x_{n} , tを持つ。


Part 3.

便宜上xn+1:=tx_{n+1} :=tとしよう。

ロルの定理: 関数f(x)f(x)[a,b][a,b]連続であり、(a,b)(a,b)微分可能であり、f(a)=f(b)f(a)=f(b)ならば、f(c)=0f ' (c)=0を満たすcc(a,b)(a,b)に少なくとも一つ存在する。

全てのi=0,,ni=0, \cdots , nに対して G(xi)=0=G(xi+1) G(x_{i}) = 0 = G(x_{i+1}) なのでロルの定理によりg(xi)=0g ' ( x’_{i}) = 0を満たすxiH{xi,xi+1}x'_{i} \in \mathscr{H} \left\{ x_{i} , x_{i+1} \right\}が存在し、同様に全てのi=0,,(n1)i=0, \cdots , (n-1)に対して g(xi)=0=g(xi+1) g ' (x’_{i}) = 0 = g ' (x’_{i+1}) なのでロルの定理によりG(xi)=0G''( x’’_{i}) = 0を満たすxiH{xi,xi+1}x''_{i} \in \mathscr{H} \left\{ x’_{i} , x’_{i+1} \right\}が存在する。このように帰納的にロルの定理を(n+1)(n+1)回使用して G(n+1)(ξ)=0 G^{(n+1)} ( \xi ) = 0 を満たすξH{x0,,xn+1}\xi \in \mathscr{H} \left\{ x_{0} , \cdots , x_{n+1} \right\}の存在を保証することができる。

一方で、pnp_{n}nn次の多項式なので E(n+1)(x)=f(n+1)(x) E^{(n+1)} (x) = f^{(n+1)} ( x) Ψ\Psiの最高次項はxn+1x^{n+1}であるため Ψ(n+1)(x)=(n+1)! \Psi^{(n+1)} (x) = (n+1)! G(x)=E(x)Ψ(x)Ψ(t)E(t)\displaystyle G (x) = E(x) - {{ \Psi (x) } \over { \Psi (t) }} E(t)の両辺をxxに対して(n+1)(n+1)回微分すると G(n+1)(x)=f(n+1)(x)(n+1)!Ψ(t)E(t) G^{(n+1)} (x) = f^{(n+1)} ( x) - {{ (n+1)! } \over { \Psi (t) }} E(t) x=ξx=\xiG(n+1)G^{(n+1)}f(n+1)f^{(n+1)}に代入すると 0=f(n+1)(ξ)(n+1)!Ψ(t)E(t) 0 = f^{(n+1)} ( \xi ) - {{ (n+1)! } \over { \Psi (t) }} E(t) E(t)=f(t)pn(t)E (t) = f(t) - p_{n} (t)なので、次を得る。 f(t)j=0nf(xj)lj(t)=(tx0)(txn)(n+1)!f(n+1)(ξ) f(t) - \sum_{j=0}^{n} f( x_{j} ) l_{j} (t) = {{ (t - x_{0}) \cdots (t - x_{n}) } \over { (n+1)! }} f^{(n+1)} ( \xi )


  1. Atkinson. (1989). 数値解析入門(第2版): p131. ↩︎