XLPack 6.1
C/C++ API リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ _bsplev()

void _bsplev ( double  t[],
double  ad[],
int  n,
int  k,
int  nderiv,
double  x,
int *  inev,
double  svalue[],
double  work[],
int *  info 
)

B-スプライン関数値および微分値

目的
本ルーチンはB-形式(t[], a[], n, k)のB-スプライン関数のxにおける関数値および微分値を求め, svalue[i] (i = 0〜nderiv-1)に格納する. ただし, t[k-1] <= x <= t[n] である.

ad[i]は, nderiv = 1の場合, B-スプライン係数a[i] (i = 0〜n-1)であってよい. その他の場合, 次の呼び出しにより前もって計算しておかなけらばならない.
bspldr(t, a, n, k, nderiv, ad);
x = t[i] (k-1 <= i <= n-1)であれば, 右極限値が求められる. t[i]において左極限値(左微分値)を求めるためには, nをi-1で置き替えて x = t[i] (k <= i <= n) とせよ.
引数
[in]t[]配列 t[lt] (lt >= n + k)
ノットベクトル.
[in]ad[]配列 ad[lad] (lad >= (2*n - nderiv + 1)*nderiv/2)
差分商の表.
[in]nB-スプライン係数の数. (n = ノット多重度の合計 - k)
[in]kB-スプラインの次数. (k >= 1)
[in]nderiv微分係数の数. (1 <= nderiv <= k)
nderiv = 1 であれば 0次微分係数 = 関数値を返す.
[in]x引数. (t[k-1] <= x <= t[n])
[in,out]inev初期化パラメータ.
[in] bsplevの最初の呼び出し時, 1に設定しておかなければならない.
[out] 最初の呼び出し後の処理のための情報. ユーザーが変更してはならない. 異なるスプラインは異なったinevパラメータを持つ.
[out]svalue[]配列 svalue[lsvalue] (lsvalue >= nderiv)
svalue[0]にspline関数値, 残りにnderiv-1個の微分係数を返す.
[out]work[]配列 work[lwork] (lwork >= 3*k)
作業領域.
[out]info= 0: 正常終了
= -3: 入力パラメータ n の誤り (n < k)
= -4: 入力パラメータ k の誤り (k < 1)
= -5: 入力パラメータ ideriv の誤り (nderiv < 1 または nderiv > k)
= -6: 入力パラメータ x の誤り (x < t[k-1] または x > t[n])
= 1: t[k-1]において左極限値は求められない
出典
SLATEC