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

◆ bfqad()

void bfqad ( double(*)(double)  f,
double  t[],
double  bcoef[],
int  n,
int  k,
int  id,
double  x1,
double  x2,
double  tol,
double *  quad,
double  work[],
int *  info 
)

任意関数×B-スプラインの積分値

目的
本ルーチンは任意の関数f(x)とB-形式(t[], bcoef[], n, k)のk次B-スプラインのid次微分値の積の区間[x1, x2]における積分を求める. [x1, x2]は[t[k-1], t[k]]の部分区間でなければならない.

8点ガウス公式を使用した適応求積ルーチンにより, 区間内に含まれるノットにより構成された部分区間[x1, x2]の積分を求める.
引数
[in]f被積分関数 f(x) を求めるユーザーサブルーチンで, 次のように定義すること.
double f(double x)
{
return f(x)の値;
}
[in]t[]配列 t[lt] (lt >= n + k)
ノットベクトル.
[in]bcoef()配列 bcoef[lbcoef] (lbcoef >= n)
B-スプライン係数.
[in]nB-スプライン係数の数. (n = ノット多重度の合計 - k)
[in]kB-スプラインの次数. (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]quadf(x)*(k次B-スプラインのid次微分係数) の区間[x1, x2]における積分値.
[out]work[]配列 work[lwork] (lwork >= 3*k)
作業領域.
[out]info= 0: 正常終了
= -4: 入力パラメータ n の誤り (n < k)
= -5: 入力パラメータ k の誤り (k < 1 または k > 20)
= -6: 入力パラメータ id の誤り (id < 0 または id >= k))
= -7: 入力パラメータ x1 の誤り (x1 < t[k-1] または x1 > t[n])
= -8: 入力パラメータ x2 の誤り (x2 < t[k-1] または x2 > t[n])
= -9: 入力パラメータ tol の誤り (tol < dtol または tol > 0.1)
= 1: [x1, x2]における積分の一部が要求精度を満たさなかった
出典
SLATEC