Текст подпрограммы и версий ( Фортран ) iis4r.zip |
Тексты тестовых примеров ( Фортран ) tiis4r.zip |
Текст подпрограммы и версий ( Си ) iis4r_c.zip |
Тексты тестовых примеров ( Си ) tiis4r_c.zip |
Текст подпрограммы и версий ( Паскаль ) iis4r_p.zip |
Тексты тестовых примеров ( Паскаль ) tiis4r_p.zip |
Вычисление значений интерполяционного кубического сплайна в заданных точках.
Вычисляются значения кубического сплайна 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