|
Текст подпрограммы и версий ( Фортран ) ii21r.zip |
Тексты тестовых примеров ( Фортран ) tii21r.zip |
|
Текст подпрограммы и версий ( Си ) ii21r_c.zip |
Тексты тестовых примеров ( Си ) tii21r_c.zip |
|
Текст подпрограммы и версий ( Паскаль ) ii21r_p.zip |
Тексты тестовых примеров ( Паскаль ) tii21r_p.zip |
Построение интерполирующего сплайна К - го порядка с произвольными узлами интерполяции.
Пусть задана сетка узлов (узлы сплайна):
t1 ≤ t2 ≤ ... ≤ tk < tk + 1 < ... < tn < tn + 1 ≤ tn + 2 ≤ ... ≤ tn + k ,
определяющая для i = 1, 2, ..., n нормированные В - сплайны Ni k (x) порядка k, соответствующие узлам
ti , ti + 1 , ... , ti + k .
Строится сплайн - функция
n
f (x) = ∑ a i Ni k (x) , t1 ≤ x ≤ tn + 1 ,
i = 1
коэффициенты ai, i = 1, 2, ..., n, которой определяются условиями интерполяции
n
∑ a i Ni k ( z j ) = bj , j = 1, 2, ... , n ,
i = 1
где Z1 < Z2 < ... < Zn узлы интерполяции, такие что [Z1, Zn] ⊆ [ t1, tn + 1 ] , а bj - заданные значения.
C.de Boor, Package for Calculating with B - splines, SIAM J. Numerical Analysis, 14 (3), 1977, pp. 441 - 472.
SUBROUTINE I I21R (N, K, T, Z, A, B, R, R1, R2, IERR)
Параметры
| N - | заданное число узлов интерполяции (тип: целый); |
| K - | заданный порядок В - сплайна (тип: целый); |
| T - |
вещественный вектоp длины N + K значений
узлов сплайна: T (1) ≤ T (2) ≤ ... ≤ T (K) < T (K + 1) < T (K + 2) < T (N) < T (N + 1) ≤ T (N + 2) ≤ ... ≤ T (N + K); |
| Z - | вещественный вектоp длины N значений узлов интерполяции: T (1) ≤ Z (1) < Z (2) < ... < Z (N) ≤ T (N + K); |
| A - | вещественный вектоp длины N: aI = A (I), I = 1, 2, ..., N; |
| B - | вещественный вектоp длины N: bI = B (I), I = 1, 2, ..., N; |
| R - | вещественный двумерный рабочий массив размера N * (2*K - 1); |
| R1 - | вещественный рабочий вектоp длины K; |
| R2 - | вещественный двумерный рабочий массив размера N*K; |
| IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом: |
| IERR=65 - | когда какой - то узел Z (I) не принадлежит [T (1), T (N + 1)]; |
| IERR=66 - | когда матрица для определения коэффициентов вырождена. |
Версии: нет
Вызываемые подпрограммы
| UTI I10 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы I I21R. |
| ASB1R - | подпрограмма решения системы с ленточной матрицей, заданной в компактной форме, с выбором ведущего элемента по столбцу. |
| I I21R1 - | служебная подпрограмма. |
| I I21R2 - | служебная подпрограмма. |
Замечания по использованию: нет
REAL T(9), Z(6), A(6), B(6), R(6, 5), R1(3), R2(6, 3)
DATA T /3*0., 2., 4., 6., 3*8./
DATA Z /1., 3., 4., 5., 6., 7./
N = 6
K = 3
DO 5 I = 1, N
ZX = Z(I)
B(I) = ZX * ZX * ZX
5 CONTINUE
CALL II21R (N, K, T, Z, A, B, R, R1, R2, IERR)
Результаты: IERR = 0 , A = 0., -2., 18., 110., 322., 512.