Текст подпрограммы и версий id22r_c.zip |
Тексты тестовых примеров tid22r_c.zip |
Вычисление значения некоторой производной функции, линейно представленной через B - сплайн k - го порядка, в заданной точке.
Пусть функция n f(x) = ∑ aj Nj k(x) , j=1
где aj - заданные коэффициенты, а Nj k (x) - нормированные B - сплайны k - го порядка, соответствующие сетке узлов
t1 ≤ t2 ≤ ... ≤ tk < tk+1 <...< tn < tn+1 ≤ tn+2 ≤ ... ≤ tn+k .
Вычисляется значение i - ой производной функции f в заданной точке x ∈ [t1, tn + 1] для некоторого i: 0 ≤ i ≤ k .
C.de Boor, Package for Calculating with B - splines, SIAM J. Numerical Analysis, 14(3), 1977, pp. 441-772.
real id22r_c (real *t, real *a, integer *n, integer *k, real *x, integer *id, real *r)
Параметры
t - | вещественный вектоp длины n + k, значений узлов сплайна t (1) ≤ t (2) ≤ ...≤ t (k) < t (k + 1) < ...< t (n) < t (n + 1) ≤ ...≤ t (n + k); |
a - | вещественный вектоp длины n заданных значений коэффициентов aj = A (j), j = 1, 2,..., n; |
n - | заданное число B - сплайнов, n ≥ 2*k (тип: целый); |
k - | порядок B - сплайна (тип: целый); |
x - | заданное значение точки, в которой вычисляется производная f ( i ) (x), порядка i = id; t (1) ≤ x ≤ t (n + 1) (тип: вещественный); |
id - | заданный порядок вычисляемой производной 0 ≤ id ≤ k (тип: целый); |
r - | вещественный рабочий двумерный массив размерности 3k. |
Версии: нет
Вызываемые подпрограммы
i i21r2_c - | служебная подпрограмма. |
Замечания по использованию: нет
int main(void) { /* Initialized data */ static float t[9] = { 0.f,0.f,0.f,2.f,4.f,6.f,8.f,8.f,8.f }; static float a[6] = { 0.f,-2.f,18.f,110.f,322.f,512.f }; /* Local variables */ extern float id22r_c(float *, float *, int *, int *, float *, int *, float *); static int i__, k, n; static float r__[9] /* was [3][3] */, s, x; static int id; n = 6; x = 5.f; k = 3; id = 0; for (i__ = 1; i__ <= 3; ++i__) { id = i__; s = (float)id22r_c(t, a, &n, &k, &x, &id, r__); printf("\n id = %2i s = %16.7e \n",id, s); /* l5: */ } return 0; } /* main */ Результаты: s = 76., 30., 0.