2 補間法

実験やシミュレーションを行うと,離散的にデータが得られるのは普通である.例えば, 半導体の電圧・電圧特性の測定では, $ (V_0,I_0),\,(V_1,I_1),\,
(V_2,I_2),\,(V_3,I_3),\,\cdots,\,(V_N,I_N)$のようなデータが得られる.通常,この データはグラフ化して解析を進める.このデータの場合,2次元のグラフ上に測定点が並 ぶことは,今まで学習してきたとおりである.

実験等を通して得られる結果は離散的であるが,実際の現象は連続的なことが多い.この 離散的な値を用いて,測定点の間の値--例えば電流と電圧の関係--を求めるのが補 間法の役割である.ここで学習したラグランジュ補間もスプライン補間も,全てのグラフ 上の測定点を通る曲線の方程式を求めている.

2次元のグラフ上の点は,数学では座標$ (x,\,y)$の点として与えられる.以降の説明では, 電圧・電流などのように特定の問題にとらわれないよう,一般化した座標$ (x,\,y)$で話 を進める.

2.1 ラグランジュ補間

平面座標上に$ N+1$個の点がある場合,その全ての点を通る曲線は$ N$次関数で表すことが できる2.2個の場合には1次関数,すなわち直線で,その2点を通る関数 を決めることができる.3点の場合は,2次関数になる.

この性質を利用すると,$ N+1$個の点がある場合,$ N$次関数で補間できることが分かる. ラグランジュ補間とは,まさにこの補間を行っていうる.数学の授業で,ある3点 $ (x_0,y_0),\,(x_1,y_1),\,(x_2,y_2)$を通る2次関数 $ y=ax^2+bx+c$$ a,b,c$を求めた ことがあるだろうが,それと同じである.そこでは,それぞれの$ x$$ y$の値を代入して, 連立方程式をつくり$ a,b,c$を求めたはずである.

コンピューターを用いて,$ N+1$個の点を通る$ N$次方程式を表す$ N+1$個の係数を連立方 程式を解くことにより求めることは可能である.しかし,最終目的の$ N$ 次関数の値を求 めると言う意味では不経済である.補間という目的からすると,関数を形成する係数なん か,全く興味の対象外なのである.そこで,係数が分からなくても,$ N$次関数を示すも のとして,ラグランジュ補間が使われる.

2次元座標上に$ N+1$個の点, $ (x_0,y_0)\,,(x_1,y_1),\,(x_2,y_2),\,\cdots,\,(x_N,y_N)$のラグランジュ補間は,

\begin{align*}\begin{aligned}y&=\frac{(x-x_1)(x-x_2)(x-x_3)\cdots(x-x_N)} {(x_0-...
...)} {(x_N-x_0)(x_N-x_1)(x_N-x_2)\cdots(x_N-x_{N-1})}y_N \end{aligned}\end{align*} (1)

となる.

この式(1)を見ると, -4pt

となっている.

式(1)をもうちょっと格好良く書けば,

$\displaystyle L(x)=\sum_{k=0}^{N}L_k(x)y_k$ (2)

ただし,

$\displaystyle L_k(x)$ $\displaystyle =\frac{(x-x_0)(x-x_1)(x-x_2)\cdots(x-x_{k-1})(x-x_{k+1})\cdots(x-x_N)} {(x_k-x_0)(x_k-x_1)(x_k-x_2)\cdots(x_k-x_{k-1})(x_k-x_{k+1})\cdots(x_k-x_N)}$    
  $\displaystyle =\frac{x-x_0}{x_k-x_0}\times\frac{x-x_1}{x_k-x_1}\times\frac{x-x_...
..._k-x_{k-1}}\times\frac{x-x_{k+1}}{x_k-x_{k+1}}\times\cdots\frac{x-x_N}{x_k-x_N}$    
  $\displaystyle =\prod_{j=0}^{N(j\neq k)}\frac{x-x_j}{x_k-x_j}$ (3)

となる.

ラグランジュ補間の考え方は単純で,その計算も簡単である.しかし,補間の点数が増え てくると,ラグランジュの補間には問題が生じる.ラグランジュの補間では,補間の点数 が増えてくると大きな振動が発生して,もはや補間とは言えなくなる.ラグランジュの補 間には常にこの問題が付きまうので,データ点数が多い場合は使えなくなる.

2.2 スプライン補間

2.2.1 区分多項式

ラグランジュの補間は,データ点数が増えてくると関数が振動し問題が発生する.補間す る関数の次数が増加するからである.そこでこの問題を解決するために,補間する領域をデータ間隔 $ [x_i,x_{i+1}]$で区切り,その近傍の値を使い低次の多項式で近似することを考える. 区分的な関数を使うことになるが,上手に近似をしないと境界でその導関数が不連続にな る.導関数が連続になるように,上手に近似する方法がスプライン補間(spline interpolation)である.

補間をするデータは,先と同じように $ (x_0,y_0)\,,(x_1,y_1),\,(x_2,y_2),\,\cdots,\,(x_N,y_N)$とする.そし て,区間 $ [x_j,x_{j+1}]$で補間をする関数を$ S_j(x)$とする.この様子を 図1に示す.

図 1: スプライン補間の区分
\includegraphics[keepaspectratio,scale=0.7]{figure/Spline.eps}

2.2.2 係数が満たす式

3次のスプライン補間を考えるので,

$\displaystyle S_j(x)=a_j(x-x_j)^3+b_j(x-x_j)^2+c_j(x-x_j)+d_j \qquad(j=0,1,2,3,\cdots,N-1)$ (4)

となる.スプライン補間を行う場合,この $ a_j, b_j, c_j, d_j$を決めることが,主な作 業である.

これらの4$ N$個の未知数を決めるためには,$ 4N$個の方程式が必要である.そのために, 3次のスプライン補間に以下の条件を課すことにする.

以上の条件を課すと$ 4N-2$個の方程式が決まる.未知数は4$ N$個なので,2個方程式が不 足している.この不足を補うために,いろいろな条件が考えられるが,通常は両端$ x_0$$ x_N$での2次導関数の値を0とする.すなわち, $ S_0^{\prime\prime}(x_0)=S_{N-1}^{\prime\prime}(x_N)=0$である.これを自然スプラ イン(natural spline)と言う.自然スプライン以外には,両端の1次導関数の値を指定す るものもある.

これで全ての条件が決まった.あとは,この条件に満たす連立方程式を求めるだけである.


ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年2月5日


no counter