Текст подпрограммы и версий ( Фортран ) iac1r.zip |
Тексты тестовых примеров ( Фортран ) tiac1r.zip |
Текст подпрограммы и версий ( Си ) iac1r_c.zip |
Тексты тестовых примеров ( Си ) tiac1r_c.zip |
Текст подпрограммы и версий ( Паскаль ) iac1r_p.zip |
Тексты тестовых примеров ( Паскаль ) tiac1r_p.zip |
Вычисление сетки и коэффициентов аппроксимирующего кубического сплайна по заданным значениям функции одной переменной и краевым условиям на заданной (возможно неравномерной) сетке.
Пусть заданы сетка X ( I ),
I = 1, ..., NX и значения функции F (X)
на ней:
FX ( I ) = F ( X ( I ) ) ,
I = 1, ..., NX.
Могут быть заданы краевые условия.
Для определения сетки и вычисления коэффициентов воспользуемся формулами :
TX(I + 2) = X( I ) , CX( I + 2) = FX( I ) , I = 1, ..., NX.
При периодических функциях дополнительные узлы и значения функции определяются из условий периодичности :
TX(1) = X(NX - 2) - X(NX) + X(1) , CX(1) = FX(NX - 2) , TX(2) = X(NX - 1) - X(NX) + X(1) , CX(2) = FX(NX - 1) , TX(NX + 3) = X(2) + X(NX) - X(1) , CX(NX + 3) = FX(2) , TX(NX + 4) = X(3) + X(NX) - X(1) , CX(NX + 4) = FX(3) .
При непериодических функциях дополнительные значения функции вычисляются из краевых условий, приведенных в [1], а узлы определены формулами:
TX(1) = 3 * X(1) - 2 * X(2) , TX(NX + 3) = 2 * X(NX) - X(NX - 1) , TX(2) = 2 * X(1) - X(2) , TX(NX + 4) = 3 * X(NX) - 2 * X(NX - 1) .
После определения сетки сплайна и вычисления дополнительных значений функции вычисляются коэффициенты сплайна в зависимости от порядка аппроксимирующих формул [2].
1. | Гребенников А.И., Казе В.О. - Л. Быстрые алгоритмы аппроксимации функции сплайнами и решение некоторых прикладных задач. - Методы и алгоритмы в численном анализе. M.: Изд - во МГУ, 1984. |
2. | Гребенников А.И. Метод сплайнов и решение некоррректных задач теории приближений. M.: Изд - во МГУ, 1983. |
SUBROUTINE IAC1R (X, NX, FX, LX, MXA, FXA, MXB, FXB, TX, CX)
Параметры
X - | вещественный вектоp длины NX, содержащий значения узлов исходной сетки; |
NX - | заданное число узлов исходной сетки. NX ≥ 4 (тип: целый); |
FX - | вещественный вектоp длины NX, содержащий значения функции в узлах исходной сетки; |
LX - | заданное число, порядок аппроксимирующих формул, 0 ≤ LX ≤ 1 (тип: целый); |
MXA - | заданное число, определяющее периодичность функции или тип краевых условий на левом конце отрезка, 0 ≤ MXA ≤ 3 (тип: целый); |
MXA = 3 - | периодическая функция, |
MXA = 0 - | условие интерполяции, |
MXA=1,2 - | задана производная порядка MXA; |
FXA - | заданное значение производной порядка MXA на левом конце отрезка (тип: вещественный), (используется, если MXA = 1, 2); |
MXB - | заданное число, определяющее тип краевых условий на правом конце отрезка, 0 ≤ MXB ≤ 2 (тип: целый), (используется, если MXA < 3), |
MXB = 0 - | условие интерполяции, |
MXB=1,2 - | задана производная порядка MXB; |
FXB - | заданное значение производной порядка MXB на правом конце отрезка (тип: вещественный), (используется, если MXB = 1, 2); |
TX - | вещественный вектоp длины NX + 4, содержащий вычисленные значения узлов сетки сплайна; |
CX - | вещественный вектоp длины NX + 4, содержащий NX + 2 значений коэффициентов сплайна. |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
Подпрограмма использует рабочие подпрограммы - функции и подпрограммы IAC1R1, IAC1R2, IAC1R3, IAC1R4 и IAS1R2. |
DIMENSION X(4), FX(4), TX(8), CX(8) DATA X /2., 3., 4., 5./ DATA FX /8., 27., 64., 125./ CALL IAC1R (X, 4, FX, 1, 1, 12., 2, 30., TX, CX) Результаты: TX = ( 0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 ) CX = ( -0.00 6.00 24.00 60.00 120.00 210.00 )