Spline のまとめ
以下の記事は、上記ページから読み取って推測した結果。成書を参考にしたほうがそりゃいいんだけど、負けかなと思って(謎
定義
(一般の)スプラインは、以下の性質をもった1変数関数のことである。
スプラインのタイプ
knot が等間隔のとき、 uniform、そうでないとき non-uniform であるという。両端点以外の knot での近傍が何階微分まで一致しているかを全部集めたベクトルを smoothness vector という。
不連続なスプラインは、複数の knot が重複していると考えることで構成できる。このような knot が重なっているものを multiple knot といい、それで書かれた拡張 knot vector でスプラインのタイプを完全に表現できる。次数 n に対してある knot での smoothness を r としたとき、なめらかさの損失 *1 j = n − r を考える。各 knot を j 個ずつ重複させたのが拡張 knot vector である。連続する多項式の間の knot での smoothness が n なら、両多項式は同一であるので、拡張 knot vector からは消える(よなぁ、この定義だと)*2。
したがって、 multiple knots では、 smoothness が負になることもあり、スプラインは不連続であるかもしれない。
各区間の多項式の次数の最大値が n のとき、 order が n+1 であるという(らしい)。
X(t), Y(t) がスプラインで、(最大の)次数*3、knot が同じ時、 c(t) = (X(t), Y(t)) をスプライン曲線という。
いろいろなスプライン
- 0 次の場合、いわゆる階段関数となる。
- すべて 1 次の場合、折れ線。端点がつながっていれば、多角形である。
- すべての区分多項式が 3 次で、 smoothness vector の値がすべて 2 であるとき、cubic spline (C spline) という。両端区分以外は一意に定まる。両端区分を定めるために両端で 2 階微分を 0 (変曲点)としたのが、 natural cubic spline。一般によくつかわれるスプラインで、単にスプラインといってこれを指すことも多い。
- 与えられた knot と値の組に対して、すべての区間で同じ次数 n の区分多項式で、 knot でその値になる連続な(つまり smoothness が 0 以上、連続である)スプラインを考えることが、いわゆるスプライン補間である。一般には一意ではないので、自由度分の制約が必要。
スプラインの表現
ある knot vector t, smoothness vector r, 次数 n に対するスプラインはたくさんある*4。この集合は線型空間を成す(関数の値の和、関数の値のスカラ倍に関して)。 Srn(t) と書く。
cubic spline, natural cubic spline など、特定の条件を満たすもの全体は、部分空間になる。
スプラインの表現によって、 B-spline, Bézier spline などがある。
各区分多項式が、何らかの基底の線型和であらわされているとき、条件によっては単純に和を求めず、うまい再帰的な手法で求めることができたりする。したがって、スプラインによって計算方法はさまざまになる。
次回予告
- B spline
- Bézier spline