
数学において、スプラインとは、多項式によって区分的に定義される関数である。補間問題においては、スプライン補間は多項式補間よりも好まれることが多い。なぜなら、低次の多項式を用いた場合でも同様の結果が得られ、高次の多項式ではルンゲ現象を回避できるからである。
コンピュータサイエンスの分野におけるコンピュータ支援設計(CAD )やコンピュータグラフィックスでは、スプラインという用語は区分的多項式(パラメトリック)曲線を指すことが多い。スプラインは、その構造の単純さ、評価の容易さと精度、そして曲線フィッティングや対話型曲線設計によって複雑な形状を近似できる能力から、これらの分野で広く用いられている曲線である。
スプラインという用語は、造船業者や製図工が滑らかな形状を描くために使用する、柔軟なスプライン装置に由来する。
「スプライン」という用語は、データ補間や平滑化を必要とするアプリケーションで使用される幅広い関数群を指すために用いられます。データは一次元でも多次元でも構いません。補間用のスプライン関数は通常、補間制約の下で適切な粗さの尺度(例えば、積分二乗曲率)を最小化するものとして決定されます。平滑化スプラインは、補間スプラインの一般化と見なすことができ、関数は観測データに対する平均二乗近似誤差と粗さの尺度の加重結合を最小化するように決定されます。粗さの尺度の多くの意味のある定義において、スプライン関数は本質的に有限次元であることがわかっています。これが、計算や表現においてスプラインが有用である主な理由です。このセクションの残りの部分では、一次元多項式スプラインにのみ焦点を当て、「スプライン」という用語をこの限定的な意味で使用します。
ジェラルド・ファリンによれば、Bスプラインは19世紀初頭にロシアのカザン大学のニコライ・ロバチェフスキーによって研究されたという。[ 1 ]
コンピュータが普及する以前は、数値計算は手作業で行われていました。符号関数やステップ関数といった区分的に定義された関数も用いられていましたが、扱いやすい多項式が一般的に好まれていました。コンピュータの登場により、スプラインの重要性が高まりました。当初は補間における多項式の代替として用いられ、その後、コンピュータグラフィックスにおいて滑らかで柔軟な形状を構築するためのツールとして活用されるようになりました。
スプラインに関する最初の数学的言及は、おそらく滑らかな区分的多項式近似に関連して「スプライン」という言葉が初めて使用された1946年のシェーンベルクの論文であると一般的に認められています。しかし、そのアイデアは航空機および造船業界にルーツがあります。(Bartels et al., 1987)の序文で、ロビン・フォレストは、第二次世界大戦中に英国の航空機産業で使用された「ロフティング」という技術について説明しています。これは、大きな設計ロフトの床に配置された点に薄い木の帯(「スプライン」と呼ばれる)を通すことで飛行機のテンプレートを作成する技術で、船体設計から借用されたものです。長年、船舶設計では、小型モデルを使用して設計を行っていました。成功した設計は方眼紙にプロットされ、プロットの重要な点がより大きな方眼紙に原寸大で再プロットされました。薄い木の帯は、重要な点を滑らかな曲線に補間する役割を果たしました。ストリップは離散的な点(フォレストは「ダック」と呼び、シェーンベルクは「ドッグ」または「ラット」を使用した)で所定の位置に保持され、これらの点の間では最小のひずみエネルギーの形状をとる。フォレストによれば、このプロセスの数学モデルを作成する動機の一つとして考えられるのは、ロフトが敵の爆弾に当たった場合に航空機全体の重要な設計コンポーネントが失われる可能性があったことである。これが「円錐ロフティング」を生み出し、円錐曲線を使用してダック間の曲線の位置をモデル化した。円錐ロフティングは、ボーイングのJCファーガソンと(やや遅れて)ブリティッシュ・エアクラフト・コーポレーションのマルコムA.サビンの研究に基づいて、1960年代初頭にスプラインと呼ばれるものに置き換えられた。
「スプライン」という言葉は、もともとイースト・アングリア地方の方言だった。
自動車ボディのモデリングにスプラインを使用するようになったのは、いくつかの独立した起源があるようだ。シトロエンのド・カステルジョー、ルノーのピエール・ベジエ、ゼネラルモーターズのバーコフ、ガラベディアン、ド・ブール(バーコフとド・ブール、1965年を参照)らが、いずれも1960年代初頭または1950年代後半に研究を行ったとされている。ド・カステルジョーの論文は少なくとも1つ、1959年に発表されたが、広くは知られていなかった。ド・ブールのゼネラルモーターズでの研究は、1960年代初頭に多数の論文発表につながり、その中にはBスプラインに関する基礎的な研究も含まれている。
スプラインに関する最初の書籍である(Ahlberg et al., 1967)の著者2名が勤務していたプラット・アンド・ホイットニー・エアクラフト社や、フェオドール・タイルハイマーによるデビッド・テイラー・モデル・ベイスンでも研究が行われていた。ゼネラルモーターズでの研究については(Birkhoff, 1990)と(Young, 1997)に詳しく記載されている。デイビス(1997)はこの資料の一部を要約している。
まず、議論を1変数多項式に限定します。この場合、スプラインは区分的多項式関数です。この関数をSと呼び、区間[ a , b ]から値を取り、それをにマッピングします。実数の集合、 S を区分的に定義し たい。これを実現するために、区間[ a , b ]をk個の順序付けられた互いに素な部分区間で覆う。
[ a , b ]のk個の「部分」それぞれについて、多項式P iを定義したい。 [ a , b ]のi番目の部分区間 では、SはP iによって定義される。
与えられたk + 1個の点t iはノットと呼ばれます。ベクトルt = ( t 0 , …, t k )はスプラインのノットベクトルと呼ばれます。ノットが区間[ a , b ]内に等間隔に分布している場合、スプラインは一様であると言います。そうでない場合は、非一様であると言います。
多項式部分P i のそれぞれの次数が最大でnである場合、スプラインは次数≤ n (またはn + 1のオーダー ) であると言われます。
もしt iの近傍において、スプラインは(少なくとも)滑らかであると言われる。t iにおいて、 2 つの多項式部分P i –1とP i は、 0 次導関数 (関数値) からr i次導関数までの共通の導関数値を共有します(言い換えれば、隣接する 2 つの多項式部分は、最大でn – r iの滑らかさの損失で接続されます)。
スプラインが滑らかであるようなベクトルr = ( r 1 , …, r k –1 )t i (i = 1, …, k – 1)における は、スプラインの平滑化ベクトルと呼ばれます。
ノットベクトルt、次数n 、およびtの 平滑化ベクトル rが与えられたとき、ノットベクトルtと平滑化ベクトル rを持つ次数≤ nのすべてのスプラインの集合を考えることができる。2 つの関数を加算する操作 (点ごとの加算) と関数の実数倍を取る操作を加えると、この集合は実ベクトル空間となる。このスプライン空間は一般に次のように表される。
多項式スプラインの数学的研究において、2 つのノット、例えばt iとt i +1が互いに近づいて一致するようになったときに何が起こるかという問題には、簡単な答えがあります。多項式部分P i ( t )は消滅し、部分P i −1 ( t )とP i +1 ( t )はt iとt i +1の滑らかさの損失の合計と結合します。つまり、 ここでj i = n – r iである。これにより、ノットベクトルのより一般的な理解が得られる。任意の点における連続性の損失は、その点に存在する複数のノットの結果とみなすことができ、スプラインの種類は、その次数nと拡張ノットベクトルによって完全に特徴付けられる。
ここで、t iはi = 1, …, k – 1に対してj i回繰り返されます。
区間[ a , b ]上のパラメトリック曲線XとYの両方が同じ次数で、その区間上で同じ拡張ノットベクトルを持つスプライン関数である場合、それはスプライン曲線 である。
区間[ a , b ]が[0, 3]であり、部分区間が[0, 1]、[1, 2]、[2, 3]であるとします。多項式の各部分は次数が 2 であり、[0, 1]と[1, 2]の部分では値と 1 階微分 ( t = 1において) が結合し、[1, 2]と[2, 3]の部分では値 ( t = 2において) のみが結合するとします。これにより、次のようなタイプのスプラインS ( t )が定義されます。
そのタイプのメンバーであり、また
これはそのタイプのメンバーになります。(注:多項式部分2 tは二次ではありませんが、結果は二次スプラインと呼ばれます。これは、スプラインの次数がその多項式部分の最大次数であることを示しています。)このタイプのスプラインの拡張ノットベクトルは(0, 1, 2, 2, 3)になります。
最も単純なスプラインは次数が0です。これはステップ関数とも呼ばれます。次に単純なスプラインは次数が1です。これは線形スプラインとも呼ばれます。平面上の閉じた線形スプライン(つまり、最初のノットと最後のノットが同じ)は、単なる多角形です。
一般的なスプラインの一つに、自然三次スプラインがあります。三次スプラインは次数が3で、連続性はC2です。つまり、値と1階および2階導関数は連続です。自然とは、スプライン多項式の2階導関数が補間区間の両端でゼロになることを意味します。
したがって、スプラインのグラフは区間外では直線になりますが、それでも滑らかです。
ノットベクトルに n個以上のノットがある場合、どのような意味があるのかという疑問が生じるかもしれない。なぜなら、これは次のような連続性につながるからである。 この高い多重度の位置において。慣例として、このような状況は、隣接する 2 つの多項式部分間の単純な不連続性を示します。これは、拡張ノットベクトルにノットt i がn + 1回より多く出現する場合、すべての多重度n + 1、n + 2、n + 3などが同じ意味を持つため、 ( n + 1)番目のインスタンスを超えるすべてのインスタンスをスプラインの特性を変更することなく削除できることを意味します。一般的に、任意のタイプのスプラインを定義するノットベクトルは、この方法で選別されていると想定されています。
数値解析で使用される 次数nの古典的なスプラインタイプは連続性を持つ つまり、隣接する 2 つの多項式は、各ノットでその値と最初のn − 1階の導関数で一致するということです。フラット スプラインを最もよくモデル化する数学的スプラインは、 3 次 ( n = 3 )、2 回連続微分可能 ( C 2 )、自然スプラインであり、これは、この古典的なタイプのスプラインに、端点aとbに追加の条件を課したものです。
グラフィックでよく使われるもう 1 つのスプラインの種類、例えばAdobe SystemsのAdobe Illustratorのような描画プログラムでは、立方体のピースで構成されていますが、連続性は最大で 1 つだけです。 このスプライン型は、PostScriptだけでなく、一部のコンピュータフォントの定義にも使用されています。
ハイエンドのグラフィックスやアニメーション向けに設計された多くのコンピュータ支援設計システム(CADシステム)は、拡張ノットベクトルを使用しています。例えば、Autodesk Mayaなどが挙げられます。CADシステムでは、非一様有理Bスプライン(NURBS)と呼ばれるスプラインの拡張概念がよく用いられます。
関数や物理オブジェクトからサンプリングされたデータが利用可能な場合、スプライン補間は、そのデータを近似するスプラインを作成する手法です。
自然条件を持つ点xにおけるi番目のC 2補間三次スプラインの一般式は、次の式を用いて求めることができる。
どこ
与えられた区間[ a , b ]と、その区間上の与えられた拡張ノットベクトルに対して、次数nのスプラインはベクトル空間を形成します。簡単に言うと、これは、ある種類のスプラインを 2 つ足し合わせると、その種類のスプラインが生成され、ある種類のスプラインに任意の定数を掛けると、その種類のスプラインが生成されることを意味します。ある種類のすべてのスプラインを含む空間の次元は、拡張ノットベクトルから数えることができます。
次元は次数と重複度の合計に等しい
スプラインの種類に線形条件が追加されると、結果として得られるスプラインは部分空間に含まれる。例えば、すべての自然三次スプラインの空間は、すべての三次C²スプラインの空間の部分空間である。
スプラインに関する文献には、特殊なタイプのスプラインを表す名前が数多く存在する。これらの名前は、以下のようなものと関連付けられている。
上記の主要項目のうち2つ以上を満たすスプラインの種類には、特別な名前が付けられることがよくあります。たとえば、エルミートスプラインは、個々の多項式部分をそれぞれエルミート多項式で表現するスプラインです。これらは、 n = 3、つまり3次エルミートスプラインとして最もよく使用されます。この次数では、接線連続( C 1 )のみとなるように選択することもできます。これは、すべての内部ノットが二重であることを意味します。このようなスプラインを与えられたデータ点に適合させる、つまり補間スプラインにするためのいくつかの方法が考案されており、2つの多項式部分が交わる点の妥当な接線値を推定することによって行われます(使用する方法に応じて、カーディナルスプライン、キャットマル・ロムスプライン、コハネク・バーテルススプラインなどが得られます)。
それぞれの表現について、スプラインの値をオンデマンドで生成できるように、何らかの評価方法を見つける必要があります。各多項式部分P i ( t )を次数n の多項式の基底で表現する表現の場合、これは概念的には簡単です。
しかし、評価と加算のステップは、しばしば巧妙な方法で組み合わされます。例えば、ベルンシュタイン多項式は、特別な漸化式を用いて効率的に線形結合で評価できる多項式の基底となります。これは、ベジェ曲線や ベジェスプラインに用いられるド・カステリョーのアルゴリズムの本質です。
しかし、スプラインを基底スプラインの線形結合として定義する表現の場合、より高度な手法が必要となる。デ・ブールアルゴリズムは、Bスプラインを評価するための効率的な方法である。
オンラインユーティリティ
コンピュータコード