|
|
◆ _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] | n | B-スプライン係数の数. (n = ノット多重度の合計 - k) |
| [in] | k | B-スプラインの次数. (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
|