Subsections

3 補間法

実験やシミュレーションを行うと,離散的にデータが得られるのは普通である.例えば, 半導体の電圧・電圧特性の測定では, $ (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)$ で話 を進める.

3.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*} (10)

となる.

この式(10)を見ると,

となっている.

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

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

ただし,

$\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}$ (12)

となる.

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

3.2 スプライン補間

3.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}

3.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)$ (13)

となる.スプライン補間を行う場合,この $ 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
2006-02-08


no counter