How to | スプライン関数を使う方法

Wolfram言語の強力なスプライン機能には,数値計算と記号計算の両方へのサポートが含まれている.組込みの基底多項式および効率的なスプライン関数は,スプラインを使ったさまざまな数学的タスクを行うためだけでなく,スプラインの特性を研究するための方法を提供する.

Wolfram言語は,BSplineBasisおよびBernsteinBasisという2つのスプライン基底を提供する.その他の特殊関数と同様,この基底は数値を使って評価することができる:

In[1]:=
Click for copyable input
Out[1]=
In[2]:=
Click for copyable input
Out[2]=

Plotを使って基底関数を可視化できる:

In[3]:=
Click for copyable input
Out[3]=

基底関数は記号的に表示するためにPiecewiseExpandを使って拡張することができる:

In[4]:=
Click for copyable input
Out[4]=

BSplineBasisは基底関数に対する詳細な抑制をサポートする.例えば以下のプロットは,第2引数を0から任意の正の整数に変化させることによって,非一様二次Bスプライン基底関数のファミリを示す:

In[5]:=
Click for copyable input
Out[5]=

非一様Bスプライン基底は,「結び目」と呼ばれる減少しない実数列を指定することによって表すことができる.結び目列はBスプラインの集合を定義する.個々の基底はから の範囲の第2引数によって指定することができる.ここで は結び目列の長さ, はBスプラインの次数である:

In[6]:=
Click for copyable input
Out[6]=
    

より高次の基底関数はテンソル積によって生成できる.以下は一様双三次Bスプライン基底関数を示す:

In[1]:=
Click for copyable input
Out[1]=
    

曲線や曲面といったBスプライン多様体は,Bスプライン基底関数と領域空間内の点との積の和として表すことができる.例えば,二次元の典型的なBスプライン曲線はDotを使って表すことができる:

In[1]:=
Click for copyable input

曲線はParametricPlotを使って表すことができる:

In[2]:=
Click for copyable input
Out[2]=

BSplineFunctionはBスプライン曲線を表す便利で効率的な方法を提供する:

In[3]:=
Click for copyable input
Out[3]=

InterpolatingFunctionのように,BSplineFunctionからの結果は与えられた領域上の点で評価したり,ParametricPlotを使ってプロットしたりすることができる:

In[4]:=
Click for copyable input
Out[4]=
In[5]:=
Click for copyable input
Out[5]=

BSplineFunctionの導関数は結果として1レベル低い次数のBSplineFunctionになる.以下の例では,導関数を使ってBスプライン曲線の上に正接ベクトルを描く:

In[6]:=
Click for copyable input
Out[6]=
In[7]:=
Click for copyable input
Out[7]=
    

BSplineFunctionはBスプライン曲面を表すことも可能で,この曲面は3Dの点の配列で指定することができる.これはParametricPlot3Dを使ってプロットできる:

In[1]:=
Click for copyable input
Out[1]=
In[2]:=
Click for copyable input
Out[2]=

パラメータの数は第2引数としてBSplineFunctionに与えることができる.例えば,以下は二変数Bスプライン関数を生成する:

In[3]:=
Click for copyable input
Out[3]=

これは上の関数であるので,表示にPlot3Dが使える:

In[4]:=
Click for copyable input
Out[4]=