数値解析におけるB-スプライン
テキストと数式を読むのが嫌なら、図を見て理解しても全く問題ない。
定義 1
区間 をのようなノードポイントで分割したとする。与えられた自由度 に対して、 と の追加のノードを考え、番目のノードポイントと自由度に依存する再帰関数 を定義しよう。これに基づき与えられたデータをインターポレートするスプライン をB-スプラインb-Splineという。
定理
- は領域 に対して として定義された指示関数を表す。
説明
B-スプラインとは、ベーシスを持ち、ピースワイズな多項式インターポレートを行うスプラインの中でも特にそのようなスプラインのことだ。関数は元の関数を再構築するためのBasisという意味で、というアルファベットを使う。
定理についての説明
証明は省略する。
実用性について言えば、コンピュータグラフィックスを始めとした応用分野が広く、理論的にも数学的にも良い特性を豊富に持っているため、B-スプラインだけで一冊の本が出るほどだ。ここで詳細に説明するのは難しいが、どんな概念なのか簡単にチェックしてみよう。定義を見るだけでは手が出ないほど難しそうに見えるが、実際の概念はそこまで難しくはない。
- 1: スプライン以前にインターポレーションとしての基本的な知識が必要だ。 の一意性を示す方法は多項式インターポレーションと本質的に違いはなく、実際に受け入れる際の違いは、関数空間を想像できるかどうかだけだ。それでも実際は関数空間を扱っているわけではないので、関数空間に慣れていなくても問題ない。
視覚的な理解
例を始める前に、実際のB-スプラインがカバーするノードは、上記の定義よりも遥かに厳しくても構わないことに注意しよう。同じ点があってもよく、追加のノードは想像以上に自由だ。しかし、理解を助けるために、例では等間隔で与えられたノードのみを考えることにする。
自由度の時、データをインターポレートするためのは上のような形をしている。これらの組み合わせによって元のデータをインターポレートすることは、文字通り、ただ四角い柱の高さを適当に調節して合わせることに他ならない。しかし、関数の線形結合で元のデータを復元するというアイデアを説明するにはこれ以上ない。
自由度の時、は上と同じ形をしていることが数式的に簡単に確認できる。ただし、簡単であることと単純であることは異なることに注意しよう。自由度の時と比べると、は少し角が取れた形をしているだろう。図では別に表現されていないが、自由度が増加するにつれてやのような追加のノードが次々と生まれ、そこでのも新たに作られる。
自由度の時、は区間ごとにクアドラティックである。もちろん、再帰的に定義されたの特性上、全区間で二次関数であるとは限らず、実際にはそうでない場合がほとんどである。上の例と最も大きく異なる点は、ついに曲線になったということだ。
B-スプラインとは、このように、特定の区間で扱いやすく、それ以外では関数値がすべての関数の線形結合でインターポレートする関数のことを指す。だから、定義は複雑に書かれているが、実際の概念はより多く、より悪い条件で同じ作業を繰り返すことに過ぎない。
参照
Atkinson. (1989). An Introduction to Numerical Analysis(2nd Edition): p173. ↩︎