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

◆ pchic()

void pchic ( int  ic[],
double  vc[],
double  sw,
int  n,
double  x[],
double  f[],
double  d[],
int  incfd,
double  work[],
int  lwork,
int *  info 
)

区分3次エルミート補間

目的
本ルーチンは区分3次エルミート補間のための微分係数を計算する. pchicでは境界条件, および, 単調増加/減少の切り替えが起きる点の取り扱いをユーザー制御可能である.

得られた区分3次エルミート関数の値はpchfeまたはpchfdにより求めることができる.
引数
[in]ic[]配列 ic[lic] (lic >= 2)
境界条件の取り扱いを指定.
ic[0] = データの始点における条件.
  = 0: 既定の境界条件 (pchimで使われるものと同じ).
  > 0: 境界における微分係数の単調性のための調整を行わない.
  < 0: 境界における微分係数は単調性のために調整される.
  ic[0]に許される数値の絶対値は次のとおり.
  = 1: x[0]における1次微分係数がvc[0]で与えられる.
  = 2: x[0]における2次微分係数がvc[0]で与えられる.
  = 3: d[0]に3点差分を使用 (n < 3ならば既定の境界条件に戻す).
  = 4: d[0]に4点差分を使用 (n < 4ならば既定の境界条件に戻す).
  = 5: 2次微分係数がx[1]において連続となるようにd[0]を設定する (n < 4ならば既定の境界条件に戻す). ic[1] = データの終点における条件.
  ic[0]と同様の値をとるが, x[n-1]における微分に適用される. ic[1] = 1 または 2の場合, 値はvc[1]で与えられる.
[in]vc[]配列 vc[lvc] (lvc >= 2)
境界値を指定する.
vc[0]は ic[0] = 1 または 2 の場合だけ設定すればよい.
vc[1]は ic[1] = 1 または 2 の場合だけ設定すればよい.
[in]sw単調増加/減少の切り替えが起きる点の取り扱いを指定する.
= 0: データの単調性を無視して単調なものとして扱う.
!= 0: 切り替え点の近傍で3点差分を使う.
> 0: 極値を含む区間における補間式はデータから sw*dfloc 以下のずれになるように制御される. ここで, dflocはこの区間および両隣の区間におけるf[]の値の最大変化である.
< 0: 特別な制御は行わない.
[in]nデータ点数. (n >= 2)
[in]x[]配列 x[lx] (lx >= n)
独立変数値. (昇順であること)
[in]f[]配列 f[lf] (lf >= incfd*(n - 1) + 1)
補間する従属変数値.
[out]d[]配列 d[ld] (ld >= incfd*(n - 1) + 1)
各x座標における微分値.
[in]incfdf[] および d[] の要素間隔. x[i]に対応するデータが f[i*incfd] および d[i*incfd]に入っていることを示す. (i = 0 〜 n-1)
[out]work[]配列 work[lwork]
作業領域.
[out]lwork配列 work[]のサイズ. (lwork >= 2*(n - 1))
[out]info= 0: 正常終了
= -1: 入力パラメータ ic[] の誤り (abs(ic[0]) > 5 および/または abs(ic[1]) > 5)
= -4: 入力パラメータ n の誤り (n < 2)
= -5: 入力パラメータ x[] の誤り (昇順でない)
= -8: 入力パラメータ incfd の誤り (incfd < 1)
= -10: 入力パラメータ lwork の誤り (lworkが小さすぎる)
= 1: ic[0] < 0で d[0]を単調性のために調節する必要がある
= 2: ic[1] < 0で d[(n-1)*incfd]を単調性のために調節する必要がある
= 3: 上の2つ共起こった
出典
SLATEC (PCHIP)