Текст подпрограммы и версий ( Фортран )
ii21r.zip
Тексты тестовых примеров ( Фортран )
tii21r.zip
Текст подпрограммы и версий ( Си )
ii21r_c.zip
Тексты тестовых примеров ( Си )
tii21r_c.zip
Текст подпрограммы и версий ( Паскаль )
ii21r_p.zip
Тексты тестовых примеров ( Паскаль )
tii21r_p.zip

Подпрограмма:  II21R

Назначение

Построение интерполирующего сплайна  К - го порядка с произвольными узлами интерполяции.

Математическое описание

Пусть задана сетка узлов (узлы сплайна):

     t1 ≤ t2 ≤ ... ≤ tk < tk + 1 < ... < tn < tn + 1 ≤ tn + 2 ≤ ... ≤ tn + k  , 

определяющая для  i = 1, 2, ..., n нормированные  В - сплайны  Ni k (x) порядка  k, соответствующие узлам

     ti , ti + 1 , ... , ti + k . 

Строится сплайн - функция

                     n                   
        f (x)  =  ∑  a i Ni k (x)  ,     t1 ≤ x ≤ tn + 1  ,
                   i = 1 

коэффициенты  ai,  i = 1, 2, ..., n, которой определяются условиями интерполяции

        n                   
       ∑  a i Ni k ( z j ) = bj  ,     j = 1, 2, ... , n  ,
     i = 1 

где  Z1 < Z2 < ... < Zn узлы интерполяции, такие что  [Z1, Zn [ t1, tn + 1 ] , а  bj - заданные значения.

C.de Boor, Package for Calculating with B - splines, SIAM J. Numerical Analysis, 14 (3), 1977, pp. 441 - 472.

Использование

    SUBROUTINE  I I21R (N, K, T, Z, A, B, R, R1, R2, IERR) 

Параметры

N - заданное число узлов интерполяции (тип: целый);
K - заданный порядок  В - сплайна (тип: целый);
T - вещественный вектоp длины  N + K значений узлов сплайна:
T (1) ≤ T (2) ≤ ... ≤ T (K) < T (K + 1) < T (K + 2) < T (N) < T (N + 1) ≤ T (N + 2) ≤ ... ≤ T (N + K);
Z - вещественный вектоp длины  N значений узлов интерполяции:  T (1) ≤ Z (1) < Z (2) < ... < Z (N) ≤ T (N + K);
A - вещественный вектоp длины  N:  aI = A (I),  I = 1, 2, ..., N;
B - вещественный вектоp длины  N:  bI = B (I),  I = 1, 2, ..., N;
R - вещественный двумерный рабочий массив размера  N * (2*K - 1);
R1 - вещественный рабочий вектоp длины  K;
R2 - вещественный двумерный рабочий массив размера  N*K;
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом:
IERR=65 - когда какой - то узел  Z (I) не принадлежит [T (1), T (N + 1)];
IERR=66 - когда матрица для определения коэффициентов вырождена.

Версии: нет

Вызываемые подпрограммы

UTI I10 - подпрограмма выдачи диагностических сообщений при работе подпрограммы I I21R.
ASB1R - подпрограмма решения системы с ленточной матрицей, заданной в компактной форме, с выбором ведущего элемента по столбцу.
I I21R1 - служебная подпрограмма.
I I21R2 - служебная подпрограмма.

Замечания по использованию: нет

Пример использования

       REAL  T(9), Z(6), A(6), B(6), R(6, 5), R1(3), R2(6, 3)
       DATA  T /3*0., 2., 4., 6., 3*8./
       DATA  Z /1., 3., 4., 5., 6., 7./
       N = 6
       K = 3
       DO 5  I = 1, N
       ZX = Z(I)
       B(I) = ZX * ZX * ZX
    5 CONTINUE
       CALL  II21R (N, K, T, Z, A, B, R, R1, R2, IERR)

Результаты:  IERR = 0 ,    A  =  0., -2., 18., 110., 322., 512.