|
|
◆ pfqad()
| void pfqad |
( |
double(*)(double) |
f, |
|
|
int |
ldc, |
|
|
double |
c[], |
|
|
double |
xi[], |
|
|
int |
lxi, |
|
|
int |
k, |
|
|
int |
id, |
|
|
double |
x1, |
|
|
double |
x2, |
|
|
double |
tol, |
|
|
double * |
quad, |
|
|
int * |
info |
|
) |
| |
任意関数×B-スプラインの積分値 (PP(区分多項式)形式)
- 目的
- 本ルーチンは任意の関数f(x)とPP(区分多項式)形式(c[][], xi[], lxi, k)のk次B-スプラインのid次微分値の積の区間[x1, x2]における積分を求める. [x1, x2]は通常は[xi[0], xi[lxi]]の部分区間である.
8点ガウス公式を使用した適応求積ルーチンにより, 区間内に含まれる区切り点により構成される部分区間[x1, x2]の積分を求める. fが定義されていれば区間[xi[0], xi[lxi]]外の積分も可能である.
- 引数
-
| [in] | f | 被積分関数 f(x) を求めるユーザーサブルーチンで, 次のように定義すること. double f(double x)
{
return f(x)の値;
}
|
| [in] | ldc | 二次元配列c[][]の整合寸法. (ldc >= k) |
| [in] | c[][] | 配列 c[lc][ldc] (lc >= lxi)
区分多項式の区切り点における右微分係数. |
| [in] | xi[] | 配列 xi[l_xi] (l_xi >= lxi + 1)
区分多項式の区切り点. |
| [in] | lxi | 区分多項式の小区間数. |
| [in] | k | B-スプラインの次数. (k >= 1) |
| [in] | id | スプラインの微分係数の次数. (0 <= id <= k - 1)
id = 0の場合, 関数値となる. |
| [in] | x1 | 積分区間の下限値. (通常 xi[0] <= x1 <= xi[lxi]) |
| [in] | x2 | 積分区間の上限値. (通常 xi[0] <= x1 <= xi[lxi]) |
| [in] | tol | 積分の要求精度. (dtol < tol <= 0.1. ただし, dtol = max(1.0e-18, 倍精度単位丸め誤差(= d1mach(4)))) |
| [out] | quad | f(x)*(k次B-スプラインのid次微分係数)の区間[x1, x2]における積分値. |
| [out] | info | = 0: 正常終了
= -2: 入力パラメータ ldc の誤り (ldc < k)
= -5: 入力パラメータ lxi の誤り (lxi < 1)
= -6: 入力パラメータ k の誤り (k < 1)
= -7: 入力パラメータ id の誤り (id < 0 または id >= k))
= -10: 入力パラメータ tol の誤り (tol < dtol または tol > 0.1)
= 1: [x1, x2]における積分の一部が要求精度を満たさなかった |
- 出典
- SLATEC
|