スプライン(数学)

1/3と2/3の単一のノットは、 C 2 パラメトリック連続性を満たす3つの3次多項式のスプラインを確立します。区間の両端の3つのノットは、曲線が端点を補間することを保証します。

数学においてスプラインとは多項式によって区分的に定義される関数です補間問題においては、スプライン補間は多項式補間よりも好まれることが多いです。これは、低多項式を用いても同様の結果が得られ、高次多項式で はルンゲ現象を回避できるためです。

コンピュータサイエンスの分野であるコンピュータ支援設計(CAD)コンピュータグラフィックス(CG)において、 「スプライン」という用語は、区分多項式(パラメトリック曲線を指すことが多い。スプラインは、その構成の単純さ、評価の容易さと正確さ、そして曲線フィッティングとインタラクティブな曲線設計を通じて複雑な形状を近似できることから、これらの分野でよく使われる曲線である

スプラインという用語は、造船業者や製図工が滑らかな形状を描くために使用する柔軟なスプラインデバイスに由来しています。

導入

「スプライン」という用語は、データの補間や平滑化を必要とするアプリケーションで使用される広範な関数を指すために使用されます。データは1次元または多次元のいずれかです。補間のためのスプライン関数は通常、補間制約の下で、適切な粗さの尺度(例えば、積分二乗曲率)を最小化する関数として決定されます。平滑化スプラインは、補間スプラインの一般化と見なすことができます。つまり、関数は観測データの平均二乗近似誤差と粗さ尺度の重み付き組み合わせを最小化するように決定されます。粗さ尺度の多くの意味のある定義において、スプライン関数は本質的に有限次元であることが分かっており、これが計算や表現におけるスプラインの有用性の主たる理由です。本節の残りの部分では、1次元の多項式スプラインにのみ焦点を当て、「スプライン」という用語をこの限定された意味で使用します。

歴史

ジェラルド・ファリンによれば、Bスプラインは19世紀初頭にロシアのカザン大学ニコライ・ロバチェフスキーによって研究されていました。[1]

コンピュータが使用される以前は、数値計算は手作業で行われていました。符号関数ステップ関数といった区分的に定義された関数も使用されていましたが、扱いやすい多項式が一般的に好まれました。コンピュータの登場により、スプラインの重要性が高まりました。スプラインは当初、補間における多項式の代替として使用され、その後、コンピュータグラフィックスにおいて滑らかで柔軟な形状を構築するためのツールとして使用されるようになりました。

スプラインに関する最初の数学的言及は、1946年のシェーンベルクの論文であると一般的に認められています。これは、滑らかな区分多項式近似に関連して「スプライン」という用語が初めて使用された例であると考えられます。しかし、この概念の起源は航空機および造船産業にあります。(Bartels et al., 1987)の序文で、ロビン・フォレストはロフティング」について説明しています。これは、第二次世界大戦中のイギリスの航空機産業で用いられた手法で、大型の設計ロフトの床に敷かれた点に薄い木の板(「スプライン」と呼ばれる)を通すことで飛行機の型板を作成するものでした。この手法は船体設計から借用されたものです。長年にわたり、船舶設計の現場では、小規模な設計に模型が用いられてきました。完成した設計図はグラフ用紙にプロットされ、その主要な点がより大きなグラフ用紙に原寸大で再プロットされました。薄い木の板は、主要な点を滑らかな曲線に補間する役割を果たしました。ストリップは離散的な点(フォレストは「アヒル」と呼び、シェーンベルクは「犬」または「ネズミ」と呼んだ)で固定され、これらの点の間では歪みエネルギーが最小となる形状をとる。フォレストによると、このプロセスの数学的モデル化のきっかけの一つは、ロフトが敵の爆弾に被弾した場合、航空機全体の重要な設計部品が失われる可能性があることだった。これが「円錐ロフティング」を生み出し、円錐断面を用いてアヒル間の曲線の位置をモデル化した。円錐ロフティングは、1960年代初頭にボーイング社のJCファーガソンと(やや遅れて)ブリティッシュ・エアクラフト社のM.A.セービンの研究に基づき、後にスプラインと呼ばれるものに置き換えられた

「スプライン」という言葉は、もともとイースト・アングリア方言の言葉でした。

自動車の車体モデリングにおけるスプラインの使用は、いくつかの独立した始まりを持つようです。シトロエンde CasteljauルノーPierre BézierゼネラルモーターズのBirkhoffGarabediande Boorらは、いずれも 1960 年代初頭または 1950 年代後半に行われた研究の功績が認められています (Birkhoff and de Boor, 1965 を参照)。de Casteljau の論文は少なくとも 1 つが 1959 年に発表されましたが、広くは発表されませんでした。ゼネラルモーターズでの De Boor の研究は、 B スプラインに関する基礎研究を含む、1960 年代初頭に多数の論文の発表につながりました

プラット・アンド・ホイットニー・エアクラフト社でも研究が行われており、スプラインに関する最初の書籍となった(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 + 1t iはノットと呼ばれます。ベクトルt = ( t 0 , …, t k )は、スプラインのノットベクトルと呼ばれます。ノットが区間[ a , b ]内に等間隔に分布している場合、スプラインは一様であると言い、そうでない場合は非一様であると言います。

多項式部分P i のそれぞれの次数が最大でnである場合、スプラインは次数 n (または順序 n + 1 ) であると言われます。

t iの近傍にある場合、スプラインはt iにおいて(少なくとも)滑らかであるとされる。つまり、t iにおいて、 2つの多項式部分P i –1P i は、0次の導関数(関数値)からr i次の導関数まで共通の導関数値を共有する(言い換えれば、隣接する2つの多項式部分は、最大でnr iの滑らかさの損失で接続される)。

i = 1, …, k – 1に対してt iスプラインが滑らかになるようなベクトルr = ( r 1 , …, r k –1 )は、スプラインの滑らかさベクトルと呼ばれます。

結び目ベクトルt、次数n 、およびtに対する 滑らかさベクトル rが与えられたとき、結び目ベクトルtと滑らかさベクトル rを持つ次数≤ nのすべてのスプラインの集合を考えることができる。2つの関数の加算(点ごとの加算)と関数の実数倍の演算を備えることで、この集合は実ベクトル空間となる。このスプライン空間は一般に次のように表記される。

多項式スプラインの数学的研究において、2つの結び目、例えばt it i +1が互いに接近して一致するとどうなるかという問いには、簡単に答えられる。多項式要素P i ( t )は消え、 P i −1 ( t )P i +1 ( t )の要素は、t it i +1の滑らかさの損失の合計と結合する。つまり、 j i = nr iである。これは、結び目ベクトルのより一般的な理解につながる。任意の点における連続性の損失は、その点に位置する複数の結び目の結果であると考えることができ、スプラインの種類はその次数n拡張された結び目ベクトルによって完全に特徴付けることができる。

ここでt iはi = 1, …, k – 1に対してj i回繰り返されます

区間[ a , b ]上のパラメトリック曲線は、 XYの両方がその区間上で同じ拡張ノットベクトルを持つ同じ次数のスプライン関数である 場合にスプライン曲線になります。

区間[ 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次スプラインです。3次スプラインは次数3で連続性C 2を持ち、つまり1次導関数と2次導関数の値が連続です。自然とは、スプライン多項式の2次導関数が補間区間の端点でゼロになることを意味します。

したがって、スプラインのグラフは、間隔の外側では直線になりますが、それでも滑らかです。

注記

ノットベクトルにn個を超える多重ノットがある場合、その意味は何かという疑問が生じるかもしれません。なぜなら、多重ノットの数が多い場合、連続性が生じるからです。慣例的に、このような状況は、隣接する2つの多項式部分の間に単純な不連続性があることを示します。つまり、拡張ノットベクトルにノットt i がn + 1回以上出現する場合、多重度n + 1n + 2 、n + 3などはすべて同じ意味を持つため、スプラインの特性を変えることなく、( n + 1)番目を超えるノットのインスタンスをすべて削除できます。一般的に、あらゆる種類のスプラインを定義するノットベクトルは、このようにして除去されていると想定されています。

数値解析で使用されるn次スプラインの古典型は連続性を持ち、隣接する2つの多項式の各節点における値と最初のn − 1導関数が一致することを意味します。平坦スプラインを最もよくモデル化する数学的スプラインは、 3次(n = 3)、2回連続微分可能(C 2 )、自然スプラインです。これは、この古典型スプラインに端点abに追加の条件が課されたものです

グラフィックスでよく使用される別のタイプのスプライン ( Adobe SystemsAdob​​e Illustratorなどの描画プログラムなど) には、立方体のピースがありますが、連続性は最大でも 1 インチです。 このタイプのスプラインは、 PostScriptや一部のコンピュータ印刷フォントの定義でも使用されます。

高性能グラフィックスやアニメーション向けに設計された多くのコンピュータ支援設計システム(CAD)では、拡張ノットベクトルが使用されています( Autodesk Mayaなど)。これらのCADシステムでは、非一様有理Bスプライン(NURBS)と呼ばれるスプラインの拡張概念がよく使用されます

関数または物理オブジェクトからのサンプリングされたデータが利用可能な場合、スプライン補間はそのデータを近似するスプラインを作成する方法です。

一般的な表現C23次スプラインの補間

自然な条件を持つ点xにおけるi番目のC 2補間3次スプラインの一般的な表現は、次の式で求められます。

どこ

  • i番目のノットにおける 2 次導関数の値です
  • i番目のノットにおける関数の値です

表現と名前

与えられた区間[ a , b ]とその区間上の与えられた拡張ノットベクトルに対して、 n次スプラインはベクトル空間を形成します。簡単に言うと、これは、与えられたタイプの任意の2つのスプラインを加算すると、そのタイプのスプラインが生成され、与えられたタイプのスプラインに任意の定数を乗じると、そのタイプのスプラインが生成されることを意味します。特定のタイプのすべてのスプラインを含む空間の次元は、拡張ノットベクトルから次のように計算できます。

次元は次数と多重度の合計に等しい

ある種のスプラインに追加の線形条件が課された場合、結果として得られるスプラインは部分空間に存在します。例えば、すべての自然な3次スプラインの空間は、すべての3次C 2スプラインの空間の部分空間です。

スプラインに関する文献には、特殊なタイプのスプラインを表す名前が数多く記載されています。これらの名前は、次のようなものに関連付けられています。

  • スプラインを表現するために選択されたもの、例:
  • 拡張ノット ベクトルを形成する際に行われる選択、例:
    • C n –1連続性のために単一のノットを使用し、これらのノットを[ a , b ]上で均等に配置する(均一なスプラインが得られる
    • 間隔に制限のないノットを使用する(非均一なスプラインが得られる)
  • スプラインに課せられる特別な条件。例:
    • abで2次導関数をゼロにする(自然なスプラインを与える
    • 与えられたデータ値がスプライン上にあることを要求する(補間スプラインを与える)

多くの場合、上記の主な項目の 2 つ以上を満たすスプラインのタイプには特別な名前が選ばれています。たとえば、エルミート スプラインは、エルミート多項式を使用して個々の多項式部分をそれぞれ表すスプラインです。これらは、n = 3の場合、つまり 3 次エルミート スプラインとして最もよく使用されます。この次数では、さらに接線連続 ( C 1 )のみになるように選択することもできます。これは、すべての内部ノットが 2 重であることを意味します。このようなスプラインを特定のデータ ポイントにフィットさせる方法、つまりスプラインを補間する方法や、2 つの多項式部分が交わる妥当な接線値を推定する方法 (使用する方法に応じて、カーディナル スプラインCatmull-Rom スプライン、およびKochanek-Bartels スプラインが得られます) がいくつか発明されています。

それぞれの表現について、スプラインの値を必要に応じて生成できるように、何らかの評価手段を見つける必要があります。個々の多項式要素P i ( t )をn次多項式の何らかの基底で表現する表現の場合、これは概念的に単純です。

  • 与えられた引数tの値に対して、それが属する区間を求める。
  • その区間に選択された多項式基底を調べる
  • tにおける各基底多項式の値を求めます
  • その区間c 0 , ..., c k –2上のスプラインを与える基底多項式の線形結合の係数を調べます。
  • 基底多項式の値の線形結合を合計して、 tにおけるスプラインの値を取得します

しかし、評価と加算のステップは巧妙な方法で組み合わせられることがよくあります。例えば、ベルンシュタイン多項式は、特殊な漸化式を用いて線形結合で効率的に評価できる多項式の基礎となります。これは、ベジェ曲線ベジェスプラインで特徴づけられるドゥ・カステルジョーのアルゴリズムの本質です。

しかし、スプラインを基底スプラインの線形結合として定義する表現には、より洗練された手法が必要です。de Boorアルゴリズムは、Bスプラインを評価するための効率的な手法です

参考文献

  1. ^ Farin, GE (2002). CAGDのための曲線と曲面:実践ガイド. Morgan Kaufmann. p. 119.
  • Ferguson, James C.、「多変数曲線補間」、 J. ACM、vol. 11、no. 2、pp. 221–228、1964年4月。
  • Ahlberg、Nielson、Walsh、「スプラインの理論とその応用」、 1967 年。
  • バーコフ「流体力学、リアクター計算、および表面表現」、スティーブ・ナッシュ(編)『科学的計算の歴史』、1990 年。
  • Bartels、Beatty、Barsky、「コンピュータ グラフィックスおよび幾何学モデリングで使用するスプライン入門」、 1987 年。
  • Birkhoff and de Boor, 区分多項式補間と近似, HL Garabedian (編), Proc. General Motors Symposium of 1964, pp. 164–190. Elsevier, New York and Amsterdam, 1965.
  • Charles K. Chui、「多変量スプライン」、SIAM、ISBN 978-0-898712261 (1987)。
  • Davis, B-スプラインと幾何学的設計、SIAM News、 vol. 29、no. 5、1996年。
  • エプパーソン「スプラインの歴史」NAダイジェスト、第98巻、第26号、1998年。
  • Ming-Jun Lai、Larry L. Schumaker、「Spline Functions on Triangulations」、Cambridge Univ. Press、ISBN 978-0-521-87592-9 (2007)。
  • Stoer & Bulirsch、数値解析入門。スプリンガー・フェルラーグ。 p. 93-106。 ISBN 0387904204
  • Schoenberg, 解析関数による等距離データの近似問題への貢献, Quart. Appl. Math., vol. 4, pp. 45–99 and 112–141, 1946.
  • ヤング、ギャレット・バーコフと応用数学、AMSの通知、第44巻、第11号、pp.1446-1449、1997年。
  • Chapra、Canale、『エンジニアのための数値解析法』第 5 版。
  • Schumaker, Larry L.、「スプライン関数: 基本理論」、 John Wiley、ISBN 0-47176475-2 (1981)。
  • Schumaker, Larry、「スプライン関数: 計算方法」、 SIAM、ISBN 978-1-61197-389-1 (2015)。
  • Schumaker, Larry、「スプライン関数: より多くの計算モデル」、 SIAM、ISBN 978-1-61197-817-9 (2024)。

オンラインユーティリティ

コンピュータコード

  • pspline、czspline、ezspline - 現在のリビジョン (2025) はプライベート リポジトリにありますが、2019 年のこのリビジョンはアクセスを要求しなくても引き続き利用できます。
  • Sisl: NURBS、SINTEF 用のオープンソース C ライブラリ
  • C++ 3次スプライン補間 - 3次および3次エルミートスプラインをサポートするヘッダーのみのライブラリ
Retrieved from "https://en.wikipedia.org/w/index.php?title=Spline_(mathematics)&oldid=1319406794"