Текст подпрограммы и версий ( Фортран ) iis9r.zip |
Тексты тестовых примеров ( Фортран ) tiis9r.zip |
Текст подпрограммы и версий ( Си ) iis9r_c.zip |
Тексты тестовых примеров ( Си ) tiis9r_c.zip |
Текст подпрограммы и версий ( Паскаль ) iis9r_p.zip |
Тексты тестовых примеров ( Паскаль ) tiis9r_p.zip |
Интерполяция кубическим квази - эрмитовым сплайном табличной функции от одной переменной на неравномерной сетке.
Вычисляются коэффициенты 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 |