Main Content

bspligui

節点の関数としての B スプラインの実験

構文

bspligui

説明

bspligui は、B スプラインが節点にどのように依存しているかを探索するためのグラフィカル ユーザー インターフェイスを起動します。節点を追加、移動、または削除すると、それに応じて、B スプラインとその最初の 3 つの導関数が変わることがわかります。

節点シーケンス t0tk をもつ B スプラインについて次の基本的な事実がわかります。

  • B スプラインは開区間 (t0..tk) では正です。両端の節点が多重度 k の節点でない限り、両端の節点 t0 と tk では 0 になります。B スプラインは閉区間 [t0..tk] の外部でも 0 ですが、B スプラインのその部分はユーザー インターフェイスに表示されません。

  • 最大に達しても、B スプラインが 1 を超えることはありません。多重度が少なくとも k–1 の節点でのみ区間 (t0..tk) 内で値 1 に到達します。一方、最大値を任意に小さくすることはできません。内部節点が存在しない場合に最小になるようです。

  • B スプラインは次数 k の区分的多項式、つまり、多項式のすべての区分の次数が <k です。k = 1:4 の場合、B スプラインの最初の 3 つの導関数を調べると、すべての非ゼロの多項式区分が次数 k – 1 であることを観察できます。つまり、次数は、節点を追加/削除するたびに 1 ずつ増減します。

  • 各節点 tj は B スプラインのブレークですが、いくつかの節点が同じでも許容されます。したがって、非自明な多項式区分の数は最大で k (すべての節点が異なる場合)、最小で 1 ("内部" 節点が存在しない場合) となり、1 から k までのいずれかの数となります。

  • ブレークをまたがる B スプラインの滑らかさは、対応する節点の多重度に依存します。ブレークが節点シーケンスで m 回発生する場合、B スプラインの (k–m) 次導関数にはそのブレークをまたぐジャンプがありますが、次数が (k–m) を下回るすべての導関数はそのブレークをまたいで連続しています。そのため、節点の多重度を変えることで、その節点をまたがる B スプラインの滑らかさを制御できます。

  • 1 つの節点が別の節点に近づくと、両方をまたいで連続する最も高い導関数がジャンプを作成し、より高い導関数が非有界となります。ただし、より次数の低い導関数では、大きな変化は何も起こりません。

  • B スプラインは次の意味で "ベル型" です。1 次導関数が一様にゼロでない場合、区間 (t0..tk) では正確に 1 つの符号の変化があるため、B スプライン自体は "単一モーダル" です。つまり、その最大値は正確に 1 つです。さらに、2 次導関数が一様にゼロでない場合、その区間で正確に 2 つの符号の変化があります。最後に、3 次導関数が一様にゼロでない場合、その区間で正確に 3 つの符号の変化があります。これは、j = 0:k – 1 で、j 次導関数が一様にゼロでない場合、区間 (t0..tk) で正確に j 回の符号の変化があるという事実を示しています。用語 "ベル型" は、この特性を意味しています。この主張が厳密に真実である場合、多重度をもつ節点が存在する状況では "符号の変化" の意味に注意しなければなりません。たとえば、(k–1) 次導関数は区分定数であるため、k の多項式区分が存在しない限り、つまり、すべての節点が簡易でない限り、単純に考えると k-1 回の符号の変化は不可能です。

参考

| |