Текст подпрограммы и версий ( Фортран )
iac1r.zip
Тексты тестовых примеров ( Фортран )
tiac1r.zip
Текст подпрограммы и версий ( Си )
iac1r_c.zip
Тексты тестовых примеров ( Си )
tiac1r_c.zip
Текст подпрограммы и версий ( Паскаль )
iac1r_p.zip
Тексты тестовых примеров ( Паскаль )
tiac1r_p.zip

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

Назначение

Вычисление сетки и коэффициентов аппроксимирующего кубического сплайна по заданным значениям функции одной переменной и краевым условиям на заданной (возможно неравномерной) сетке.

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

Пусть заданы сетка  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 )