線形補間

**線形補間**（せんけいほかん、）は、多項式補間の特殊なケースで、線形多項式（一次式）を用いた回帰分析の手法である。**1次補間**としても知られている。

なお、3つ以上のデータに対し線形補間といった場合、1つの線型近似によるフィッティングではなく、区分線形関数を使った**区分線形補間**（1次スプライン補間、いわゆる折れ線グラフ）のことである。

線形補間は数学の世界（特に数値解析）やコンピュータグラフィックスを含む多くの分野で非常によく使われている。補間の非常に単純な形式であり、これより単純なのは最近傍補間（0次補間）しかない。

## 線形補間を行う方法

座標(*x*0, *y*0)と(*x*1, *y*1)があるとする。ここで、
[*x*0, *x*1]の間にある*x*が与えられたときに、この線上にある点を得たいとする。図をよく見ると次のことがわかる。

:\frac{y - y_0}{y_1 - y_0} = \frac{x - x_0}{x_1 - x_0}. \,\!

両辺と同じ値である値を\alphaと置こう。これは**補間係数**である。

これは、*x*0から*x*1までの距離と*x*に当たるまで動かした点までの距離の比である。

*x*に入る値が分かれば、次の式によって\alphaが得られる。

:\alpha = \frac{x-x_0}{x_1-x_0}. \,\!

また、次の式も成り立つ。

:\alpha = \frac{y-y_0}{y_1-y_0} \,\!

この式を代数的に操作すると次のどちらかの式が得られる。

:y = (1 - \alpha) y_0 + \alpha y_1 \,\!

:y = y_0 + \alpha (y_1-y_0)\,\!

この式から、\alphaの値を計算すると直接*y*の値を得られることが分かる。この式は*x*が*x*0と*x*1の間になくても成立する。それ故に、\alphaは0から1の間にないかもしれないが、その場合、通常は*比率*とは呼ばれない。その場合は**線形外挿法**と呼ばれる。

*y*が既知で*x*を知りたい場合、*x*と*y*を交換して全く同じ手続きをすればいい。

これはもっと複雑な補間アルゴリズムにはない特徴である。

## 誤差評価
線形補間はしばしば、ある関数*f*上の他の2点の値を使って、その関数上のある値を近似するのに使われる。この近似による誤差は次のように定義される。

:R_T = f(x) - p(x) \,\!

ここで、*p*は線形補間多項式であり、以下で定義される。

:p(x) = f(x_0) + \frac{f(x_1)-f(x_0)}{x_1-x_0}(x-x_0). \,\!

エラーは次に示す式の範囲内にある。この式はもし、関数*f*が2次の連続する導関数を持つならば、ロルの定理を使えば証明できる。

:|R_T| \leq \frac{(x_1-x_0)^2}{8} \max_{x_0 \leq x \leq x_1} |f*(x)|. \,\!</math>

見れば分かるが、与えられた関数上の2点間の近似は、近似された関数の2次導関数から計算された値よりも悪くなる。このことは、カーブを描いた関数は単純な線形補間を使った近似を行うと悪い値が出ることからも、直感的に正しいことが分かる。

==特徴==
[[計算量]]が非常に少ない。一般にスプライン補間は[[線型方程式系|連立方程式]]を解くが、1次では例外的にその必要がなく、計算量は <math>O(n)</math> にすぎない。

[[連続]]だが、区分的にしか[[滑らかな関数|滑らか]]でなく、[[導関数]]および高次導関数は一般に不連続である（一般に、*n* 次補間は *n* - 1 次導関数まで連続である）。連続性により、元データにない値が現れる（ただしこれは、最近傍補間や特殊なアルゴリズム以外に共通の特徴である）。また導関数が不連続であるので、元データの傾きが大きく変化する付近で、高調波が発生してしまう。

[[単調性]]が保持される。つまり、元データが単調増加だと補間結果も単調増加である（単調減少でも同じ）。このため、[[オーバーシュート]]（元データの傾きが大きく増える直前に補間結果が少し減ること、またはその逆）がない。

==応用分野==
線形補間はしばしば表の穴を埋めるのに使われる。もし、ある国の1970年、1980年、1990年、2000年の人口を表に持っていて、1994年の人口を見積もりたいとする。線形補間はこういうことを行うのには簡単な方法である。

2値間の線形補間のもっとも基本的な操作は、[[コンピュータグラフィックス]]でよく使われる。[[ブレゼンハムのアルゴリズム]] (Bresenham's algorithm) は、2点間を結ぶ線を段々に補間して描画する。

1次補間はたいていのグラフィックスプロセッサ ([[Graphics Processing Unit|GPU]]) にハードウェアレベルで実装されている。この処理はより複雑な操作を行うための処理の一部として使われている。たとえば、[[バイリニア補間]]は2つの1次補間を使ってできる。画像は多くの場合、線形補間で十分な品質が得られるが、連続という性質上、[[インデックスカラー]]画像には使いにくい。リアルタイム処理系では、[[テクスチャフィルタリング]]に使われる補間モードにバイリニア補間がよく選ばれる。

この処理はコストが安いので、非常に多くのテーブルエントリを持たずに、[[滑らかな関数]]用に素早く参照できる正確な[[ルックアップテーブル]]を実装するのもよい方法である。

==歴史==
線形補間は古くは表中の空白を埋めるのに使われていた。またしばしば天文学的なデータにも使われていた。この手法はセレウコス朝（紀元前3世紀終）やギリシャの天文学者や数学者である[[ヒッパルコス]]（紀元前2世紀）などによって使われていたと考えられている。線形補間の記述は[[クラウディオス・プトレマイオス|プトレマイオス]]（2世紀）の[[アルマゲスト]]に見ることができる。

==拡張==


要求される状況によっては、線形補間はしばしば十分に正確でないことがある。その場合は、（2次以上、通常3次の）[[多項式補間]]もしくは[[スプライン補間]]で置き換えることができる。

線形補間はまた、2変数の関数のためのバイリニア補間にも拡張できる。バイリニア補間はしばしば乱暴な[[アンチエイリアス]]フィルタとしても用いられる。似たものとして、があるが、これは3変数の関数を補間するために使われる。線形補間の他の拡張としては、三角形や正四面体のメッシュのような他の網の目構造に適用される。

==参照==
* E. Meijering (2002). [http://imagescience.bigr.nl/meijering/publications/abstracts/pieee2002.html A Chronology of Interpolation. From Ancient Astronomy to Modern Signal and Image Processing]. *Proceedings of the IEEE* *'9''' (3), 319&ndash;342.

## 関連項目
* 最近傍補間
* バイリニア補間 (双線形補間)
* 
* バイキュービック補間 (双三次補間)
* 曲線あてはめ

* 面積平均法（平均画素法）
* ランチョス法