Текст подпрограммы и версий ( Фортран )
iac2r.zip
Тексты тестовых примеров ( Фортран )
tiac2r.zip
Текст подпрограммы и версий ( Си )
iac2r_c.zip
Тексты тестовых примеров ( Си )
tiac2r_c.zip
Текст подпрограммы и версий ( Паскаль )
iac2r_p.zip
Тексты тестовых примеров ( Паскаль )
tiac2r_p.zip

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

Назначение

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

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

Задача решается аналогично случаю функции одной переменной.

Подробное изложение решения дано в работах  [1,2] и в описании подпрограммы IAC1R.

1.  Гребенников А.И., Казе В.О. - Л. Быстрые алгоритмы аппроксимации функции сплайнами и решение некоторых прикладных задач. - Методы и алгоритмы в численном анализе. M.: Изд - во МГУ, 1984.
2.  Гребенников А.И. Метод сплайнов и решение некорректных задач теории приближений. M.: Изд - во МГУ, 1983.

Использование

    SUBROUTINE  IAC2R (X, NX, Y, NY, FXY, NFX, NFY, LX, LY, MXA,
                                           FXA, MXB, FXB, MYA, FYA, MYB, FYB, TX,
                                           TY, CXY, NCX, NCY, CY) 

Параметры

X - вещественный вектоp длины  NX, содержащий значения узлов исходной сетки по  X;
NX - заданное число узлов исходной сетки по  X,  NX ≥ 4 (тип: целый);
Y - вещественный вектоp длины  NY, содержащий значения узлов исходной сетки по  Y;
NY - заданное число узлов исходной сетки по  Y,  NY ≥ 4 (тип: целый);
FXY - вещественный двумерный массив, содержащий значения функции в узлах сетки, размерностью  NFX * NFY;
NFX - заданное число стpок массива  FXY,  NFX ≥ NX (тип: целый);
NFY - заданное число столбцов массива  FXY,  NFY ≥ NY (тип: целый);
LX - заданное число, порядок аппроксимирующих формул по  X,  0 ≤ LX ≤ 1 (тип: целый);
LY - заданное число, порядок аппроксимирующих формул по  Y,  0 ≤ LY ≤ 1 (тип: целый);
MXA - заданное число, определяющее периодичность функции по  X или тип краевых условий на левом конце отрезка по  X,  0 ≤ MXA ≤ 3 (тип: целый);
MXA =  3 - периодическая функция,
MXA =  0 - условие интерполяции,
MXA=1,2 - задана производная порядка (MXA, 0);
FXA - вещественный вектоp длины  NY, содержащий значения производной порядка  (MXA, 0) на левом конце отрезка по  X (используется, если  MXA = 1, 2);
MXB - заданное число, определяющее тип краевых условий на правом конце отрезка по  X,  0 ≤ MXB ≤ 2 (тип: целый) (используется, если  MXA < 3);
MXB =  0 - условие интерполяции,
MXB=1,2 - задана производная порядка (MXB, 0);
FXB - вещественный массив длины  NY, содержащий значения производной порядка (MXB, 0) на правом конце отрезка по  X (используется, если  MXB = 1, 2);
MYA - заданное число, определяющее периодичность функции по  Y или тип краевых условий на левом конце отрезка по  Y,  0 ≤ MYA ≤ 3 (тип: целый);
MYA =  3 - периодическая функция,
MYA =  0 - условие интерполяции,
MYA=1,2 - задана производная порядка (MYA, 0);
FYA - вещественный вектоp длины  NX, содержащий значения производной порядка (MYA, 0) на левом конце отрезка по  Y (используется, если  MYA = 1, 2);
MYB - заданное число, определяющее тип краевых условий на правом конце отрезка по  Y,  0 ≤ MYB ≤ 2 (тип: целый) (используется, если  MYA < 3);
MYB =  0 - условие интерполяции,
MYB=1,2 - задана производная порядка (MYB, 0);
FYB - вещественный массив длины  NX, содержащий значения производной порядка (MYB, 0) на правом конце отрезка по  Y (используется, если  MYB = 1, 2);
TX - вещественный вектоp длины  NX + 4, содержащий вычисленные значения узлов сетки сплайна по  X;
TY - вещественный вектоp длины  NY + 4, содержащий вычисленные значения узлов сетки сплайна по  Y;
CXY - вещественный двумерный массив, содержащий вычисленные коэффициенты сплайна размерностью  NCX * NCY;
NCX - заданное число стpок массива  CXY,  NCX ≥ NX + 4 (тип: целый);
NCY - заданное число столбцов массива  CXY,  NCY ≥ NY + 4 (тип: целый);
CY - вещественный рабочий вектоp длины  MAX (NX, NY) + 4.

Версии: нет

Вызываемые подпрограммы: нет

Замечания по использованию

  Подпрограмма использует рабочие подпрограммы - функции и подпрограммы IAC1R1, IAC1R2, IAC1R3, IAC1R4 и IAS1R2.

Пример использования

       DIMENSION  X(4), Y(4), FXY(4, 4), TX(8), TY(8), CY(8), CXY(8, 8), 
      *                       FXA(4),  FXB(4)
       DATA  X /2., 3., 4., 5./
       DATA  Y /2., 3., 5., 6./
       DATA  FXA /24., 36., 60., 72./
       DATA  FXB /60., 90., 150., 180./
       DO 10  I = 1, 4
       DO 10  J = 1, 4
       FXY(I, J) = Y(J) * (X(I)**3)
  10 CONTINUE
       CALL  IAC2R (X, 4, Y, 4, FXY, 4, 4, 1, 1, 1, FXA, 2, FXB, 0, X, 0, X,
      *                        TX, TY, CXY, 8, 8, CY)

Результаты:

       TX  =  ( 0.00  1.00  2.00  3.00  4.00  5.00  6.00  7.00 )
       TY  =  ( 0.00  1.00  2.00  3.00  5.00  6.00  7.00  8.00 )

       CXY  =  (   0.00    0.00    0.00    0.00     0.00     0.00 )
       CXY  =  (   6.00   12.00   20.00   28.00    36.00    42.00 )
       CXY  =  (  24.00   48.00   80.00  112.00   144.00   168.00 )
       CXY  =  (  60.00  120.00  200.00  280.00   360.00   420.00 )
       CXY  =  ( 120.00  240.00  400.00  560.00   720.00   840.00 )
       CXY  =  ( 210.00  420.00  700.00  980.00  1260.00  1470.00 )