Текст подпрограммы и версий
iis3r.zip
Тексты тестовых примеров
tiis3r.zip
Текст подпрограммы и версий ( Си )
iis3r_c.zip
Тексты тестовых примеров ( Си )
tiis3r_c.zip
Текст подпрограммы и версий ( Паскаль )
iis3r_p.zip
Тексты тестовых примеров ( Паскаль )
tiis3r_p.zip

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

Назначение

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

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

Вычисляются коэффициенты кубического сплайна

 S (x) = yi + c1 i ( x - xi ) + c2 i ( x - xi )2 + c3 i ( x - xi )3 ,
 x  [xi, xi + 1]  ,    i = 1, 2, ..., N - 1  , 

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

Коэффициенты  c1 i , c2 i , c3 i ,  i = 1, 2, ..., N - 1 определяются значениями  S''i = S'' (x i) ,  i = 1, 2, ..., N, для нахождения которых решается система линейных алгебраических уравнений, полученная из условия непрерывности функции  S' (x) в узлах сетки и из краевых условий вида:

          2 * S''1 + b1 * S''2 = b2
          b3 * S''N - 1 + 2 * S''N = b4  , 

где  b1 , b2 , b3 , b4 - заданные параметры. Если значения производных  y''1 = y'' (x1) и  y''N = y'' (xN) интерполируемой функции известны, то надо положить:

          b1 = 0 ,  b2 = 2 * y''1
          b3 = 0 ,  b4 = 2 * y''N 

Если известны значения  y'1 = y' (x1) и  y'N = y' (xN), то надо положить:

 b1 = 1 ,   b2 = (6/(x2 - x1)) * ( (y2 - y1)/(x2 - x1) - y'1 )  ,
 b3 = 1 ,   b4 = (6/(xN - xN - 1)) * ( y'N - (yN - yN - 1)/(xN - xN - 1) ) 

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

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

    SUBROUTINE  I IS3R (X, Y, NX, BPAR, C, IERR) 

Параметры

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

Версии: нет

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

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

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

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

       DIMENSION  X(4), Y(4), BPAR(4), C(3, 3)
       DATA  X /0., 0.33, 1., 2./
       NX = 4
       DO 5  I = 1, NX
       Y(I) = ( (X(I) - 2.)*X(I) + 3. )*X(I) + 4.
    5 CONTINUE
       BPAR(1) = 1.
       BPAR(2) = 6./(X(2) - X(1)) * ((Y(2) - Y(1)) / (X(2) - X(1)) - 3.)
       BPAR(3) = 1.
       BPAR(4) = 6./(X(4) - X(3)) * (7. - (Y(4) - Y(3)) / (X(4) - X(3)))
       CALL  IIS3R (X, Y, NX, BPAR, C, IERR)

Результаты:

      IERR = 0
 
                |  3.0000  -2.0000  1.0000  |
      C  =   |  2.0067  -1.0100  1.0000  |
                |  2.0000   1.0000  1.0000  |