MathLabs

応用数学と計算数学

補間と近似

与えられたデータ点を通る、あるいは複雑な関数に近い関数を構成すること。

直観直感:点を曲線でつなぐ

気象観測所が1日のうちの数回、気温を記録したり、センサーがいくつかの離散的な測定値を報告したり、技術者がわずかな表形式の値しか持たない場合を考えよう——いずれの場合も、有限個の点 (x0,y0),(x1,y1),…,(xn,yn)(x_0,y_0), (x_1,y_1), \dots, (x_n,y_n) のリストがあり、その間の値を推測したり、それらすべてを通る滑らかな曲線を描きたいと考える。補間とは、これらの各点を正確に通る関数を構成する技術であり、より広い意味での近似は、点ごとに一致させる必要はなく、複雑な関数に近い関数を求めることである。

4つのマークされたデータ点をちょうど通る3次曲線で、4つの係数それぞれにスライダーが付いている。
この3次曲線 P(x)=x3−x2−2x+2P(x)=x^3-x^2-2x+2 は、4点 (−1,2)(-1,2)、(0,2)(0,2)、(1,0)(1,0)、(2,2)(2,2) を通る次数 33 以下の唯一の多項式である:a,b,c,da,b,c,d をドラッグして、たった4つの係数が4つのデータ点を通る曲線を決めるのにちょうど十分であることを観察せよ——これが多項式補間の本質である。

大学定義:補間問題

定義: 多項式補間

n+1n+1 個の相異なる節点 x0,x1,…,xnx_0, x_1, \dots, x_n と値 y0,y1,…,yny_0, y_1, \dots, y_n(通常はある関数 ff について yi=f(xi)y_i=f(x_i))が与えられたとき、補間問題はすべての ii について P(xi)=yiP(x_i)=y_i を満たす次数 nn 以下の多項式 PP を求めることである。ラグランジュ基底多項式 LiL_i は明示的な構成法を与える。

Li(x)=∏j≠ix−xjxi−xjL_i(x) = \prod_{j \ne i} \dfrac{x - x_j}{x_i - x_j}

各基底多項式 LiL_i は、他のすべての節点で0になり、自分自身の節点で 11 になるように作られている:j≠ij\ne i のとき x=xjx=x_j を代入すると分子の因子 (xj−xj)=0(x_j-x_j)=0 となり Li(xj)=0L_i(x_j)=0、一方 x=xix=x_i を代入すると分子と分母が一致し Li(xi)=1L_i(x_i)=1 となる。これらの構成要素を目標値で重み付けして足し合わせると、補間多項式が直接得られる。

P(x)=∑i=0nyi Li(x)P(x) = \sum_{i=0}^{n} y_i\, L_i(x)
補間・近似法の比較
方法考え方節点をまたぐ滑らかさ弱点
ラグランジュすべての節点を通る単一の多項式 P(x)=∑iyiLi(x)P(x)=\sum_i y_i L_i(x)無限に滑らか(1つの多項式なので)等間隔節点での高次多項式は激しく振動する(ルンゲ現象)
ニュートンの差分商ラグランジュと同じ多項式を節点ごとに逐次構成する無限に滑らか(同じ多項式)節点の追加は安価だが、同じ高次振動の問題を抱える
自然3次スプライン区分的3次関数、各小区間ごとに1つの3次式を滑らかに接続C2C^2(2階導関数まで連続)単一の大域的な公式は存在せず、各区間について線形方程式系を解く必要がある

大学重要な定理

n+1n+1 個の相異なる節点 x0,x1,…,xnx_0, x_1, \dots, x_n と値 y0,y1,…,yny_0, y_1, \dots, y_n が与えられたとき、すべての i=0,…,ni=0,\dots,n について P(xi)=yiP(x_i)=y_i を満たす次数 nn 以下の多項式 PP がちょうど1つ存在する。

なぜ正しいのか?

n次多項式にはちょうどn+1個の自由な係数があり、n+1個の点の値を固定することはちょうどそれだけの自由度を使い切る——多くも少なくもない——ため、1つの解が入る余地はあっても、異なる2つの解が入る余地はない。

証明

ステップ1(存在)。ラグランジュ構成 P(x)=∑i=0nyiLi(x)P(x) = \sum_{i=0}^{n} y_i L_i(x)(Li(x)=∏j≠ix−xjxi−xjL_i(x) = \prod_{j\ne i} \dfrac{x-x_j}{x_i-x_j})はすでにすべての kk について P(xk)=ykP(x_k)=y_k を満たす。なぜなら Li(xk)L_i(x_k) は i=ki=k のとき 11、それ以外のとき 00 となり、和は単一の項 yk⋅1=yky_k \cdot 1 = y_k に潰れるからである。よって少なくとも1つの有効な PP が存在し、各 LiL_i はちょうど次数 nn(nn 個の1次因子の積)を持つので、PP の次数は nn 以下である。

ステップ2(2つの解を仮定する)。QQ を、すべての ii について Q(xi)=yiQ(x_i)=y_i を満たす次数 nn 以下の別の任意の多項式とする。差 D(x)=P(x)−Q(x)D(x) = P(x) - Q(x) を考える。PP と QQ がともに次数 nn 以下なので、DD もそうである。

ステップ3(差の根を数える)。各節点 xix_i に対し D(xi)=P(xi)−Q(xi)=yi−yi=0D(x_i) = P(x_i)-Q(x_i) = y_i - y_i = 0。n+1n+1 個の相異なる節点 x0,x1,…,xnx_0, x_1, \dots, x_n があるので、DD は少なくとも n+1n+1 個の相異なる根を持つ。

ステップ4(Dが恒等的に0であることを示す)。次数 nn 以下の非零多項式は多くとも nn 個の根しか持てない(各根は1つの1次因子を与え、次数 nn の多項式はそのような因子を nn 個より多く含みえない)。DD は n+1n+1 個の根を持ち、これはその次数が許す数を超えるので、DD が零多項式でない限り矛盾する。よって D(x)≡0D(x)\equiv0、すなわち Q=PQ=P である。したがってステップ1で見つけた補間多項式は唯一である。

ff が相異なる節点 x0,x1,…,xnx_0, x_1, \dots, x_n と点 xx を含む区間上で (n+1)(n+1) 回連続微分可能であり、PP がこれらの節点で ff を補間する次数 nn の多項式であるとする。このとき、その区間内にある ξ\xi が存在して f(x)−P(x)=f(n+1)(ξ)(n+1)!∏i=0n(x−xi)f(x) - P(x) = \dfrac{f^{(n+1)}(\xi)}{(n+1)!} \prod_{i=0}^{n} (x - x_i) を満たす。

なぜ正しいのか?

補間多項式は節点ではfと正確に一致するが、節点の間ではfについて何も知らない。そのため残りの誤差はすべての節点で消えなければならない——まさに積の項が強制すること——であり、それは次数nの多項式が捉えきれないfの曲がり具合を測る残りの導関数によってスケールされる。

証明

ステップ1(巧妙な補助関数)。節点のいずれでもない点 xx を固定する(節点であれば誤差は自明に 00)。w(t)=∏i=0n(t−xi)w(t) = \prod_{i=0}^{n} (t - x_i) とし、定数 c=f(x)−P(x)w(x)c = \dfrac{f(x)-P(x)}{w(x)}(w(x)≠0w(x)\ne0 なので well-defined)を定義する。補助関数 g(t)=f(t)−P(t)−c w(t)g(t) = f(t) - P(t) - c\, w(t) を定義する。

ステップ2(gの根を数える)。各節点 xix_i において、補間の性質より f(xi)−P(xi)=0f(x_i)-P(x_i)=0、かつ ww の定義より w(xi)=0w(x_i)=0 なので、すべての n+1n+1 個の節点で g(xi)=0g(x_i)=0 となる。また cc の選び方により g(x)=f(x)−P(x)−c w(x)=f(x)−P(x)−[f(x)−P(x)]=0g(x) = f(x)-P(x) - c\,w(x) = f(x)-P(x) - [f(x)-P(x)] = 0 である。よって gg は n+2n+2 個の相異なる根を持つ:n+1n+1 個の節点と xx 自身である。

ステップ3(ロルの定理を繰り返し適用する)。gg の連続する根の各組の間(n+2n+2 個の根の間に n+1n+1 個のそのような間隔がある)で、ロルの定理により g′g' が消える点が存在するので、g′g' は少なくとも n+1n+1 個の根を持つ。この議論を g′,g′′,…g', g'', \dots に繰り返し適用すると、微分するたびに根が1つずつ失われるので、n+1n+1 回適用した後、g(n+1)g^{(n+1)} はその区間内に少なくとも1つの根 ξ\xi を持つ。

ステップ4(微分して誤差を解く)。PP の次数は nn 以下なので、その (n+1)(n+1) 階導関数は 00 である;また ww は次数 n+1n+1 のモニック多項式なので、すべての tt について w(n+1)(t)=(n+1)!w^{(n+1)}(t) = (n+1)! である。gg を微分すると g(n+1)(t)=f(n+1)(t)−0−c (n+1)!g^{(n+1)}(t) = f^{(n+1)}(t) - 0 - c\,(n+1)! となり、g(n+1)(ξ)=0g^{(n+1)}(\xi)=0 とおくと c=f(n+1)(ξ)(n+1)!c = \dfrac{f^{(n+1)}(\xi)}{(n+1)!} が得られる。c=f(x)−P(x)w(x)c=\dfrac{f(x)-P(x)}{w(x)} を思い出して誤差について解くと、まさに f(x)−P(x)=f(n+1)(ξ)(n+1)!∏i=0n(x−xi)f(x) - P(x) = \dfrac{f^{(n+1)}(\xi)}{(n+1)!} \prod_{i=0}^{n} (x - x_i) が得られる。

x0<x1<⋯<xnx_0<x_1<\dots<x_n を満たす n+1n+1 個の点 (x0,y0),…,(xn,yn)(x_0,y_0),\dots,(x_n,y_n) が与えられたとき、各小区間 [xi,xi+1][x_i,x_{i+1}] 上で3次多項式であり、[x0,xn][x_0,x_n] 全体で2回連続微分可能であり、すべての ii について S(xi)=yiS(x_i)=y_i を満たし、自然境界条件 S′′(x0)=S′′(xn)=0S''(x_0)=S''(x_n)=0 を満たす唯一の関数 SS が存在する。

なぜ正しいのか?

多くの点を通る単一の高次多項式は波打つ傾向があるが、多くの緩やかな3次片をつなぎ合わせ、継ぎ目で滑らかに一致することだけを要求すると、激しい振動なしにデータに適合するのにちょうど十分な自由度が得られ、自然境界条件は系全体を解けるようにするために必要なちょうど2つの追加の方程式を与える。

証明

ステップ1(未知数:各節点での2階導関数)。i=0,…,ni=0,\dots,n について Mi=S′′(xi)M_i = S''(x_i) とする。自然境界条件により直ちに M0=0M_0=0 と Mn=0M_n=0 が定まり、残り n−1n-1 個の未知数 M1,…,Mn−1M_1,\dots,M_{n-1} を決定すればよい。

ステップ2(各3次片をM値から再構成する)。[xi,xi+1][x_i,x_{i+1}] 上では、SS が3次なので S′′S'' は線形であり、(xi,Mi)(x_i,M_i) と (xi+1,Mi+1)(x_{i+1},M_{i+1}) を通る直線でなければならない。この線形関数を2回積分し、S(xi)=yiS(x_i)=y_i と S(xi+1)=yi+1S(x_{i+1})=y_{i+1} を用いて2つの積分定数を固定すると、その区間上の SS が Mi,Mi+1,yi,yi+1M_i, M_{i+1}, y_i, y_{i+1} と間隔 hi=xi+1−xih_i=x_{i+1}-x_i によって完全に決まる。よってすべての MiM_i が分かれば SS は完全に決まる。

ステップ3(傾きを一致させると線形方程式系が得られる)。構成により SS と S′′S'' はすでに各節点で連続である。各内部節点 xix_i(i=1,…,n−1i=1,\dots,n-1)で1階導関数 S′S' も両側から一致することを要求すると、内部節点ごとに連続する3つの未知数を関連づける線形方程式が1つ得られる:hi−1Mi−1+2(hi−1+hi)Mi+hiMi+1=6(yi+1−yihi−yi−yi−1hi−1)h_{i-1} M_{i-1} + 2(h_{i-1}+h_i) M_i + h_i M_{i+1} = 6\left(\dfrac{y_{i+1}-y_i}{h_i} - \dfrac{y_i-y_{i-1}}{h_{i-1}}\right)。これにより n−1n-1 個の未知数 M1,…,Mn−1M_1,\dots,M_{n-1}(M0=Mn=0M_0=M_n=0 を用いて)についての n−1n-1 個の線形方程式が得られる。

ステップ4(系は唯一の解を持つ)。この系の係数行列は三重対角であり、対角成分は 2(hi−1+hi)2(h_{i-1}+h_i)、非対角成分は hi−1h_{i-1} と hih_i である;すべての間隔について hi>0h_i>0 なので 2(hi−1+hi)>hi−1+hi2(h_{i-1}+h_i) > h_{i-1}+h_i が成り立ち、この行列は狭義優対角であり、狭義優対角行列は常に正則である。よって M1,…,Mn−1M_1,\dots,M_{n-1} についての線形系はちょうど1つの解を持ち、ステップ2によりこれはちょうど1つのスプライン SS を定めるので、存在と一意性の両方が証明される。

大学実世界での応用と具体例

補間は、データがサンプリングされているが連続曲線が必要とされるあらゆる場所に存在する:コンピュータフォントやアニメーションのパスはスプラインで描かれ、GPS受信機はわずかな衛星の読み取り値を滑らかな軌道に補間し、画像や音声のリサンプリングはリサイズや再生速度変更時にピクセルやサンプルの間を補間し、技術者はわずかな温度や圧力でしか測定されていない材料特性や熱力学データの疎な表を補間する。金融アナリストは、わずかな満期でしか観測されない債券価格からイールドカーブを補間し、その間の満期を持つ商品を価格付けする。

例: ラグランジュ補間による3つの測定値からの傾向予測

ある研究室が3つの測定値 (0,1)(0,1)、(1,3)(1,3)、(2,7)(2,7) を記録した。これら3点を通るラグランジュ補間多項式を用いて、x=3x=3 での値を推定せよ。

解答

ステップ1:x=3x=3 で評価した3つの基底多項式を書く。節点 x0=0,x1=1,x2=2x_0=0,x_1=1,x_2=2 について:L0(3)=(3−1)(3−2)(0−1)(0−2)=22=1L_0(3)=\dfrac{(3-1)(3-2)}{(0-1)(0-2)}=\dfrac{2}{2}=1、L1(3)=(3−0)(3−2)(1−0)(1−2)=3−1=−3L_1(3)=\dfrac{(3-0)(3-2)}{(1-0)(1-2)}=\dfrac{3}{-1}=-3、L2(3)=(3−0)(3−1)(2−0)(2−1)=62=3L_2(3)=\dfrac{(3-0)(3-1)}{(2-0)(2-1)}=\dfrac{6}{2}=3。

ステップ2:各基底値をそのデータ値で重み付けする。値は y0=1,y1=3,y2=7y_0=1, y_1=3, y_2=7 なので、推定値は P(3)=y0L0(3)+y1L1(3)+y2L2(3)=1(1)+3(−3)+7(3)P(3) = y_0 L_0(3) + y_1 L_1(3) + y_2 L_2(3) = 1(1) + 3(-3) + 7(3) である。

ステップ3:合計する。P(3)=1−9+21=13P(3) = 1 - 9 + 21 = 13。

ステップ4:明示的な多項式で検算する。3点を通る2次多項式を直接解くと P(x)=x2+x+1P(x)=x^2+x+1 が得られ、実際 P(3)=9+3+1=13P(3)=9+3+1=13 となり、多項式の係数を一切明示的に書かずにラグランジュ形式の計算が確認できる。

例: 端付近で補間誤差が爆発する理由:ルンゲ現象への第一歩

[−1,1][-1,1] 上の 55 個の等間隔節点 x0=−1,x1=−0.5,x2=0,x3=0.5,x4=1x_0=-1, x_1=-0.5, x_2=0, x_3=0.5, x_4=1 を取る。中心付近の点 x=0.1x=0.1 と端付近の点 x=0.9x=0.9 において節点多項式 w(x)=∏i=04(x−xi)w(x)=\prod_{i=0}^{4}(x-x_i) を計算し、その大きさを比較せよ。

解答

ステップ1:w(0.1)w(0.1) を計算する。w(0.1)=(0.1+1)(0.1+0.5)(0.1−0)(0.1−0.5)(0.1−1)=(1.1)(0.6)(0.1)(−0.4)(−0.9)w(0.1)=(0.1+1)(0.1+0.5)(0.1-0)(0.1-0.5)(0.1-1) = (1.1)(0.6)(0.1)(-0.4)(-0.9) であり、これを展開すると 0.023760.02376 となる。

ステップ2:w(0.9)w(0.9) を計算する。w(0.9)=(0.9+1)(0.9+0.5)(0.9−0)(0.9−0.5)(0.9−1)=(1.9)(1.4)(0.9)(0.4)(−0.1)w(0.9)=(0.9+1)(0.9+0.5)(0.9-0)(0.9-0.5)(0.9-1) = (1.9)(1.4)(0.9)(0.4)(-0.1) であり、これを展開すると −0.09576-0.09576 となるので ∣w(0.9)∣=0.09576|w(0.9)|=0.09576。

ステップ3:比較する。0.90.9 と 0.10.1 はともに [−1,1][-1,1] の内部に十分収まっているにもかかわらず、∣w(0.9)∣≈0.0958|w(0.9)| \approx 0.0958 は ∣w(0.1)∣≈0.0238|w(0.1)| \approx 0.0238 のおよそ 44 倍である。

ステップ4:誤差公式と結び付ける。補間誤差は f(x)−P(x)=f(n+1)(ξ)(n+1)!w(x)f(x)-P(x)=\dfrac{f^{(n+1)}(\xi)}{(n+1)!}w(x) であるから、端付近で ∣w(x)∣|w(x)| が大きいことは、そこでの誤差限界を直接膨らませる;f(x)=11+25x2f(x)=\dfrac{1}{1+25x^2} のように高階導関数が非常に速く増大する関数では、この端での増幅(等間隔節点をさらに増やすとさらに悪化する)こそが、ルンゲ現象として知られる激しい振動を生み出す原因であり、単一の等間隔多項式の次数を上げる代わりに3次スプラインや不均一な(チェビシェフ)節点を用いる動機となっている。

55 個の相異なるデータ点が与えられたとき、存在一意性定理により保証される唯一の補間多項式の次数はいくらか。

ラグランジュ基底多項式 Li(xi)L_i(x_i) のそれ自身の節点 xix_i における値はいくらか。

ある技術者が、ある材料の熱伝導率の 99 個の等間隔測定値に単一の次数 88 の多項式をフィットさせた。測定範囲の両端付近で、真の熱伝導率は滑らかに変化しているにもかかわらず、フィットした曲線は激しく振動する。標準的な解決策は何か。

∣f(n+1)(x)∣≤M|f^{(n+1)}(x)| \le M があるところである区間上で成り立ち、節点多項式が ∣w(x)∣≤W|w(x)| \le W を満たすとき、ラグランジュ誤差公式は ∣f(x)−P(x)∣|f(x)-P(x)| にどんな限界を与えるか。