CurveFitting[BSplineCurve] - Bスプライン曲線を計算する
使い方
BSplineCurve(xydata, v, opts)
BSplineCurve(xdata, ydata, v, opts)
パラメータ
xydata - [[x1,y1],[x2,y2],...,[xn,yn]] の形のリスト、配列、行列; データ点
xdata - [x1,x2,...,xn] の形のリスト、配列、ベクトル; 独立変数の値
ydata - [y1,y2,...,yn] の形のリスト、配列、ベクトル; 従属変数の値
v - 変数名
opts - (オプション) order=k または knots=knotlist という形の1つ以上の等式
|
説明
|
|
•
|
ルーチン BSplineCurve は制御点 {(x1,y1),(x2,y2),...,(xn,yn)} に基づき、Bスプライン曲線を計算します。計算された曲線は、パラメータ表示 [xf(v), yf(v), v=a..b] で与えられます。ここで、xf(v) および yf(v) は v の区分的関数で、a..b はスプライン曲線が定義される区間です。
|
•
|
ルーチン BSplineCurve は2通りのやり方で呼び出せます。
|
|
1番目の形式は、データ点からなる1つのリスト、配列、行列 [[x1,y1],[x2,y2],...,[xn,yn]] を受け付けます。
|
|
2番目の形式は、入力データを2つのリスト、配列、ベクトルとして受け付けます。この形式では、1番目のデータの集合は独立変数の値 [x1,x2,...,xn] からなり、2番目のデータの集合は従属変数の値 [y1,y2,...,yn] からなります。各要素は代数型でなければなりません。
|
•
|
オプション order=k (ただし、0<k<=n+1)が指定されなければ、3次(次数4)のBスプライン曲線が生成されます。次数 k のBスプライン曲線とは、次数が k より小さい多項式よりなります。
|
•
|
この手続きでは統一された結節点のリストの形式が用いられますが、オプション knots=knotlist を使えば異なったリストを使うことができます。リスト knots=knotlist はちょうど n+k 個の値からなっていないといけません。これらの値は単調非減少の順に並んでいなければいけません。もしそうでなければ、予期しない結果が生じるでしょう。オプション knots=knotlist が指定された唯一のオプションならば、3次のBスプラインが仮定されます。結節点は高々 k-1 までの重複度を持つことができます。 結節点の重複度が m ならば、その結節点での連続性は C(k-m-1) です。
|
•
|
Bスプライン曲線は v=knotlist[k]...knotlist[n+1] の範囲でのみ定義されます。この範囲の任意の値 v に対し、Bスプライン曲線には、 k個すべての調合関数が存在します。これらの調合関数は、手続き CurveFitting[BSpline] により計算されます。
|
•
|
この関数はパッケージ CurveFitting の一部なので、コマンド with(CurveFitting) を実行した後に限り、BSplineCurve(..) の形式で使うことができます。しかし、コマンドの長い形 CurveFitting[BSplineCurve](..) を使うことにより、常時使うことができます。
|
|
|
例
|
|
以下の例は、統一されたリストを使って、3次(次数4)のBスプライン曲線を生成します。
>
|
with(CurveFitting):
xydata := [[0,0],[1,1],[4,9],[6,10],[8,5],[8,3]];
c1 := BSplineCurve(xydata, v);
|
入力点で定義される境界を持つ、定義された範囲で計算された曲線を見るには、コマンド plot を使います。
次の例は、同じ入力点から、しかし重複して定義された結節点の値から、2次(次数3)Bスプライン曲線を生成します。
>
|
c2 := BSplineCurve(xydata, v, order=3, knots=[0,0,1,2,3,3,4,5,6]);
plot({c2, xydata});
|
|
|