|
|
◆ bfqad_r()
| void bfqad_r |
( |
double |
t[], |
|
|
double |
bcoef[], |
|
|
int |
n, |
|
|
int |
k, |
|
|
int |
id, |
|
|
double |
x1, |
|
|
double |
x2, |
|
|
double |
tol, |
|
|
double * |
quad, |
|
|
double |
work[], |
|
|
int * |
info, |
|
|
double * |
xx, |
|
|
double |
yy, |
|
|
int * |
irev |
|
) |
| |
任意関数×B-スプラインの積分値 (リバースコミュニケーション版)
- 目的
- 本ルーチンは任意の関数f(x)とB-形式(t[], bcoef[], n, k)のk次B-スプラインのid次微分値の積の区間[x1, x2]における積分を求める. [x1, x2]は[t[k-1], t[k]]の部分区間でなければならない.
8点ガウス公式を使用した適応求積ルーチンにより, 区間内に含まれるノットにより構成された部分区間[x1, x2]の積分を求める.
- 引数
-
| [in] | t[] | 配列 t[lt] (lt >= n + k)
ノットベクトル. |
| [in] | bcoef() | 配列 bcoef[lbcoef] (lbcoef >= n)
B-スプライン係数. |
| [in] | n | B-スプライン係数の数. (n = ノット多重度の合計 - k) |
| [in] | k | B-スプラインの次数. (k >= 1) |
| [in] | id | スプラインの微分係数の次数. (0 <= id <= k - 1)
id = 0の場合, 関数値となる. |
| [in] | x1 | 積分区間の下限値. (t[k] <= x1 <= t[n+1]) |
| [in] | x2 | 積分区間の上限値. (t[k] <= x2 <= t[n+1]) |
| [in] | tol | 積分の要求精度. (dtol < tol <= 0.1. ただし, dtol = max(1.0e-18, 倍精度単位丸め誤差(= d1mach(4)))) |
| [out] | quad | f(x)*(k次B-スプラインのid次微分係数) の区間[x1, x2]における積分値. |
| [out] | work[] | 配列 work[lwork] (lwork >= 3*k)
作業領域. |
| [out] | info | = 0: 正常終了
= -3: 入力パラメータ n の誤り (n < k)
= -4: 入力パラメータ k の誤り (k < 1 または k > 20)
= -5: 入力パラメータ id の誤り (id < 0 または id >= k))
= -6: 入力パラメータ x1 の誤り (x1 < t[k-1] または x1 > t[n])
= -7: 入力パラメータ x2 の誤り (x2 < t[k-1] または x2 > t[n])
= -8: 入力パラメータ tol の誤り (tol < dtol または tol > 0.1)
= 1: [x1, x2]における積分の一部が要求精度を満たさなかった |
| [out] | xx | irev = 1〜3の場合, 関数値を求めるべき点を返す. |
| [in] | yy | irev = 1〜3の場合, 再呼び出し時に関数値f(xx)を与えること. |
| [in,out] | irev | リバースコミュニケーションの制御変数.
[in] 最初の呼び出し時に 0 に設定しておくこと. 2回目以降の呼び出し時には値を変更してはならない.
[out] 0 以外の時には下記処理を行ってから再び本ルーチンを呼び出すこと.
= 0: 処理終了. 正常終了かどうかはinfoをチェックすること.
= 1〜3: xxにおける関数値f(xx)をyyに設定すること. yy以外の変数を変更してはならない. |
- 出典
- SLATEC
|