単調3次スプライン補間法
この2ヶ月間,投稿論文2本の執筆に明け暮れてました.久々の更新.今回は補間について
Wolberg G., Alfy L., "Monotonic Cubic Spline Interpolation," IEEE Int. Conf. Computer Graphics, 1999.
今更補間もないだろう……とは思うのですが,これはあくまでツール.データが単調に増加していたら,補間曲線も単調増加にしましょう.という要求.3次関数で補完しますが,結果としてはC2滑らかさを放棄します(補間結果の見た目を重視).
本論文では,3次スプライン(Cubic Spline)は
と定義されるようです.係数の詳しい定義は省略.しかし,媒介変数表示じゃないのか……まぁ,論文の意図としてはこれで正しいけど.
ここで,簡便のために(あとで利用しやすくするために),k=0の時を考え,さらにx_0=0,x_1=1,x=tとおいて整理する.その結果,
と整理できます.実は,始点y_0とその勾配y_0',終点y_1とその勾配y_1'を用いて曲線を指定していたことになります.さらにこの式はファーガソン曲線(Ferguson Curve)を表しています.行列で表現すると
となります(超重要).
ところで,y_0'とy_1'は
と本論文では定義しています.
さて,与えられた点データを補間するためには,その点を通過して,かつ1次微分が前後で一致する必要があります.また,今回は冒頭のように2次微分は制約条件から除外します.さらに単調な曲線になるように,αとβの値を調整しなければ行けません.これが今回のミソなんですが,結果だけ.
この図において,x軸,y軸がそれぞれα,βを表す.そして,この塗りつぶし領域の中にαとβの組み合わせがあれば,かならず単調な曲線になります.以上が制約条件になります.
曲線を客観的に評価する方法も提案されています.最小化するべき目的関数は
となります.意図するところは与えられた点における2次微分が近いほど,評価が良くなるということです.ただし,Kは正定数です.
目的関数と制約条件について,冒頭で求めた媒介変数表示かつα,βを代入してまとめます.
だいたいこんな感じです.m_k=0の時は場合分けが必要だったり,添え字の範囲がまずかったりしますが……併せて,スプライン関数も整理しておくと
となります.
とりあえず,ここまで公開.ToDoは具体的な計算結果例を挙げることと,glpkを使ってプログラムに落とし込むこと.