Текст подпрограммы и версий ( Фортран )
iis4r.zip
Тексты тестовых примеров ( Фортран )
tiis4r.zip
Текст подпрограммы и версий ( Си )
iis4r_c.zip
Тексты тестовых примеров ( Си )
tiis4r_c.zip
Текст подпрограммы и версий ( Паскаль )
iis4r_p.zip
Тексты тестовых примеров ( Паскаль )
tiis4r_p.zip

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

Назначение

Вычисление значений интерполяционного кубического сплайна в заданных точках.

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

Вычисляются значения кубического сплайна  S (x), соответствующего сетке  {xi} и интерполирующего заданные значения табличной функции  yi = y (xi),  i = 1, 2, ..., N, в точках  uk,  k = 1, 2, ..., M по формуле:

   S (uk) = yj + c1 j ( uk - xj ) + c2 j ( uk - xj )2 + c3 j ( uk - xj )3  , 

где индекс  j такой, что  uk содержится в отрезке  [xj, xj + 1], а  c1 j, c2 j, c3 j,  j = 1, 2, ..., N - 1, - заданные коэффициенты кубического сплайна.

Дж.Алберг, Э.Нильсон, Дж.Уолш, Теория сплайнов и ее приложения, M., Мир, 1972.

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

    SUBROUTINE  I IS4R (X, Y, NX, C, U, S, M, IERR) 

Параметры

X - вещественный вектоp длины  NX, содержащий заданные значения узлов сетки и упорядоченный так, что  X (1) < X (2) < ... < X (NX);
Y - вещественный вектоp длины  NX, содержащий заданные в узлах сетки значения интерполируемой функции;
NX - заданное число узлов сетки,  NX ≥ 2 (тип: целый);
C - вещественный двумерный массив размера  3 * (NX - 1), содержащий заданные коэффициенты интерполяционного кубического сплайна;
U - вещественный вектоp длины  M, содержащий заданные точки, в которых вычисляются значения интерполяционного кубического сплайна,  X (1) ≤ U (K) ≤ X (NX),   K = 1, 2, ..., M;
S - вещественный вектоp длины  M, содержащий вычисленные значения интерполяционного кубического сплайна;
M - заданное число точек, в которых вычисляются значения интерполяционного кубического сплайна (тип: целый);
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом:
IERR= 1 - когда одна или несколько заданных точек меньше  X (1);
IERR= 2 - когда одна или несколько заданных точек больше  X (NX);
IERR=65 - когда заданное число узлов сетки меньше 2;
IERR=66 - когда элементы вектоpа  X не упорядочены по возрастанию.

Версии: нет

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

UTI I10 - подпрограмма выдачи диагностических сообщений при работе подпрограммы I IS4R.

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

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

       DIMENSION  X(5), Y(5), BPAR(4), C(3, 4), U(8), S(8)
       DATA  X /1., 2., 3., 4., 5./
       DATA  U /1.5, 4.5, 3., 4.9, 2.1, 4., 2.7, 1.8/
       NX = 5
       DO 5  I = 1, NX
       Y(I) = ( (X(I) - 4.)*X(I) - 1. ) * X(I) + 5.
    5 CONTINUE
       BPAR(1) = 1.
       BPAR(2) = (6./(X(2) - X(1))) * ( (Y(2) - Y(1)) / (X(2) - X(1)) + 6. )
       BPAR(3) = 1.
       BPAR(4) = (6./(X(5) - X(4))) * ( 34. - (Y(5) - Y(4)) / (X(5) - X(4)) )
       CALL  IIS3R (X, Y, NX, BPAR, C, IERR)
       M = 8
       CALL  IIS4R (X, Y, NX, C, U, S, M, IERR)

Результаты:  

      IERR =0  

      S(1)  =    -2.125         S(5)  =  -5.479
      S(2)  =   10.625         S(6)  =   1.000
      S(3)  =    -7.000         S(7)  =  -7.177
      S(4)  =   21.709         S(8)  =  -3.928