Текст подпрограммы и версий ( Фортран )
iis9r.zip
Тексты тестовых примеров ( Фортран )
tiis9r.zip
Текст подпрограммы и версий ( Си )
iis9r_c.zip
Тексты тестовых примеров ( Си )
tiis9r_c.zip
Текст подпрограммы и версий ( Паскаль )
iis9r_p.zip
Тексты тестовых примеров ( Паскаль )
tiis9r_p.zip

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

Назначение

Интерполяция кубическим квази - эрмитовым сплайном табличной функции от одной переменной на неравномерной сетке.

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

Вычисляются коэффициенты  C ( I, 3 ), C ( I, 2 ), C ( I, 1 ) кубического квази - эрмитова сплайна

  S (x) = C ( I, 3 ) ( x - x I )3 + C ( I, 2 ) ( x - x I)2 + C ( I, 1 ) ( x - x I) + yI  , 

где  x  [x I, x I + 1],  I =1, 2, ..., N - 1, интерполирующего заданные значения табличной функции   yI = y (x I),  I = 1, 2, ..., N в узлах сетки  {x ( I )}.

Коэффициенты сплайна на отрезке  [xI, x I + 1] определяются значениями  yI, yI + 1, yI - yI - 1, yI + 2 - yI + 1 и выбираются так, что функция  S (x) непрерывна вместе со своей первой производной на всем отрезке  [x 1, x N].

Akima H., "A New Method of Interpolation and Smooth Curve Fitting Based on Local Procedures", JACM, 17 (4), 1970, 589 - 602.

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

    SUBROUTINE  I IS9R (X, Y, N, C, IERR) 

Параметры

X - вещественный вектоp длины  N, содержащий заданные узлы сетки, при этом  X ( I ) < X ( I + 1);
Y - вещественный вектоp длины  N, содержащий заданные значения интерполируемой функции в узлах сетки:  F ( I ) = Y ( I );
N - заданное количество узлов сетки,  N ≥ 4 (тип: целый);
C - вещественный двумерный массив размерности  N * 3, содержащий вычисленные коэффициенты кубического квази - эрмитова сплайна;
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом:
IERR=65 - когда заданное количество  N узлов сетки меньше четырех;
IERR=66 - когда  X ( I ) ≥ X ( I + 1) хотя бы для одного  I.

Версии: нет

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

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

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

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

       DIMENSION  X(5), Y(5), C(5, 3)
       N = 5
       DO 2  K = 1, N
       X(K) = K
    2 Y(K) = ( (X(K) - 2.)*X(K) - 3. ) * X(K) + 4.
       CALL  IIS9R (X, Y, N, C, IERR)

Результаты:

       IERR  =  0

                 |   0.0   |
                 |  -2.0  |
       Y  =   |   4.0   |
                 |  24.0  |
                 |  64.0  |

                 |  -6.0               5.090909    -1.090909  |
                 |   0.909091      6.181818    -1.090909  |
       C  =   |  10.0             11.764706    -1.764706  |
                 |  28.235294   13.592412    -1.764706  |
                 |   5.0                0.0                0.0           |