|
◆ pchsp()
void pchsp |
( |
int |
ic[], |
|
|
double |
vc[], |
|
|
int |
n, |
|
|
double |
x[], |
|
|
double |
f[], |
|
|
double |
d[], |
|
|
int |
incfd, |
|
|
double |
work[], |
|
|
int |
lwork, |
|
|
int * |
info |
|
) |
| |
区分3次スプライン補間
- 目的
- 本ルーチンは, 区分的エルミート補間式による3次スプライン補間のために, 指定された境界条件を用いて与えられたデータの微分係数値を計算する.
得られた係数を使った3次スプライン補間関数値はpchfeまたはpchfdにより求めることができる.
- 引数
-
[in] | ic[] | 配列 ic[2]
境界条件の取り扱いを指定.
ic[0] = ibeg, データの始点における条件.
ic[1] = iend, データの終点における条件.
ibeg = 0: x[1]における3次微分係数が連続になるようにd[0]を設定する. "not a knot"条件とよばれ, 既定の境界条件である.
ibeg = 1: x[0]における1次微分係数をvc[0]で与える.
ibeg = 2: x[0]における2次微分係数をvc[0]で与える. "自然"境界条件とするためには, ibeg = 2, vc[0] = 0とせよ.
ibeg = 3: d[0]に3点差分を使用(n < 3ならば既定の境界条件に戻す).
ibeg = 4: d[0]に4点差分を使用(n < 4ならば既定の境界条件に戻す).
iendはibegと同じ値でよいが, x[n-1]における微分値に適用される. iend = 1 または 2 の場合, 値はvc[1]で与える. "自然"境界条件とするためには, iend = 2, vc[1] = 0とせよ. |
[in] | vc[] | 配列 vc[2]
上述のように境界値を指定する.
vc[0]は, ic[0] = 1 または 2 の場合にだけ設定すればよい.
vc[1]は, ic[1] = 1 または 2 の場合にだけ設定すればよい. |
[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). |
[out] | d[] | 配列 d[ld] (ld >= incfd*(n - 1) + 1)
各データ点における微分係数値. これらの値により, 要求された境界条件による3次スプライン補間式が決定される. x[i]に対応する値はd[i*incfd]に格納される (i = 0〜n-1). d[]のその他の場所は変更されない. |
[in] | incfd | f[] および d[] の要素間隔. このパラメータは主として2次元アプリケーションのために提供される. (incfd >= 1) |
[out] | work[] | 配列 work[lwork]
作業領域 |
[in] | lwork | 配列work[]のサイズ (lwork >= 2*n) |
[out] | info | = 0: 正常終了
= -1: 入力パラメータ ic の誤り (ic[0] < 0 または ic[0] > 4, ic[1] < 0 または ic[1] > 4)
= -3: 入力パラメータ n の誤り (n < 2)
= -4: 入力パラメータ x の誤り (x[]が昇順でない)
= -7: 入力パラメータ incfd の誤り (incfd < 1)
= -9: 入力パラメータ lwork の誤り (lwork < 2*n) |
- 出典
- SLATEC (PCHIP)
|