XLPack 7.0
XLPack 数値計算ライブラリ (C API) リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ pchbs()

void pchbs ( int  n,
double  x[],
double  f[],
double  d[],
int  incfd,
int  knotyp,
int *  nknots,
double  t[],
double  bcoef[],
int *  ndim,
int *  kord,
int *  info 
)

区分3次エルミートからB-スプラインへの変換

目的
本ルーチンは, n, x[], f[]およびd[]により定められる区分3次エルミート関数のB-スプライン表現を求める. 出力は関数のB-スプライン表現, すなわち nknots, t[], bcoef[], ndim および kord である.

入力となる区分3次エルミート関数は本パッケージ内の他のルーチンで計算されたと仮定し, 入力値 n, x[] および incfd のチェックは行わない.

制限および仮定事項は次のとおりである.
  1. n >= 2 (チェックしない)
  2. x[i] < x[i+1], i=0〜n-1 (チェックしない)
  3. incfd > 0 (チェックしない)
  4. knotyp <= 2 (正しくなければエラーを返す)
  5. (*) nknots = ndim + 4 = 2*n + 4 (正しくなければエラーを返す)
  6. (*) t[2*k + 1] = t[2*k] = x[k], k=0〜n-1 (チェックしない)
(*): knotyp < 0 の場合のみ
引数
[in]nデータ点数. (n >= 2)
[in]x[]配列 x[lx] (lx >= n)
独立変数値. x[]の要素は昇順でなければならない.
[in]f[]配列 f[lf] (lf >= incfd*(n - 1) + 1)
関数の値. f[i*incfd]がx[i]に対応する値である (i = 0〜n-1).
[in]d[]配列 d[ld] (ld >= incfd*(n - 1) + 1)
微分係数の値. d[i*incfd]がx[i]に対応する値である (i = 0〜n-1).
[in]incfdf[] および d[] の要素間隔. (incfd >= 1)
[in]knotypノットの並びを制御するフラグ.
各xにおいて多重ノットを挿入し, knotypの値に従って端のノット対を設定することによりノットの並びt[]を構成する.
= 0: x[0] および x[n - 1] を多重度4のノットにする.
= 1: 一番端の小区間長を繰り返す.
  t[0] = t[1] = x[0] - (x[1] - x[0])
  t[m + 3] = t[m + 2] = x[n - 1] + (x[n - 1] - x[n - 2])
= 2: 境界ノットを周期的におく.
  t[0] = t[1] = x[0] - (x[n - 1] - x[n - 2])
  t[m + 3] = t[m + 2] = x[n - 1] + (x[1] - x[0])
ただし, m = ndim = 2*n.
負の値が入力された場合, nknotsとt[]は前回の呼び出しで設定されているとみなす. 本オプションはパラメトリック曲線としての使い方の際の効率化のために提供されている.
[in,out]nknotsノット数.
[in] knotyp < 0の場合: nknotsに入力された値がndim+4に等しくなければエラーを返す.
[out] knotyp >= 0の場合: nknotsは本ルーチンにより ndim+4に設定される.
[in,out]t[]配列 t[lt] (lt >= 2*n + 4)
B-スプライン形式のノット.
[in] knotyp < 0 の場合: pchbsの前回の呼び出しでt[]が設定されているものとみなす. (ノットの並びが正しいかどうかは本ルーチンでは確認しない)
[out] knotyp >= 0の場合: xの値に等しい内部(二重)ノットと上のように設定された境界ノットがt[]に設定される.
[out]bcoef[]配列 bcoef[lbcoef] (lbcoef >= 2*n)
B-スプライン係数.
[out]ndimB-スプライン領域の配列の大きさ (2*nに設定される).
[out]kordB-スプラインの次数 (4に設定される).
[out]info= 0: 正常終了
= -6: 入力パラメータ knotyp の誤り (knotyp > 2)
= -7: 入力パラメータ nknots の誤り (knotyp < 0 のとき nknots != 2*N+4)
出典
SLATEC (PCHIP)