Текст подпрограммы и версий ( Фортран )
ip04r.zip , ip04d.zip
Тексты тестовых примеров ( Фортран )
tip04r.zip , tip04d.zip
Текст подпрограммы и версий ( Си )
ip04r_c.zip , ip04d_c.zip
Тексты тестовых примеров ( Си )
tip04r_c.zip , tip04d_c.zip
Текст подпрограммы и версий ( Паскаль )
ip04r_p.zip , ip04e_p.zip
Тексты тестовых примеров ( Паскаль )
tip04r_p.zip , tip04e_p.zip

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

Назначение

Бикубическая интерполяция функции двух переменных, заданной вместе с частными производными первого порядка и смешанной производной второго порядка в вершинах элементарного сеточного прямоугольника.

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

Пусть X1L, X1U, X2L и X2U следующим образом определяют вершины элементарного сеточного прямоугольника:

        (X1L,X2U)   |                           |    (X1U,X2U)
      ______________________________________
                             |  4                   3  |
                             |       (X1,X2)       |

                             |  1                   2  |
      ______________________________________
        (X1L,X2L)   |                            |    (X1U,X2L)

Эти вершины пронумерованы на рисунке цифрами, начиная с нижней левой вершины против часовой стрелки. Пусть в каждой из вершин известны значения интерполируемой функции

        Y  =  f(x1, x2) ,
 обеих ее частных производных первого порядка:
        Y1  =  ∂f / ∂x1 ,   Y2  =  ∂f / ∂x2
 и смешанной производной   Y12  =  ∂2 f / ∂x1 ∂x2 . 

Подпрограмма IP04R при помощи бикубической интерполяции вычисляет в точке (X1,X2), заданной внутри исходного элементарного сеточного прямоугольника, значение функции

        AY = f (X1, X2) ,
 обеих ее частных производных первого порядка:
      AY1  =  ∂ f (X1, X2) / ∂x1 ,   AY2  =  ∂ f (X1, X2) / ∂x2
 и смешанной производной   AY12  =  ∂2 f (X1, X2) / ∂x1 ∂x2. 

Используются следующие формулы:

                          4     4                                               
           AY  =    ∑    ∑   ci j  t i-1 u j-1 ;
                         i=1  j=1
                          4     4
          AY1  =   ∑    ∑   (i - 1) ci j  t i-2 u j-1 ;
                         i=1  j=1
                          4     4
          AY2  =   ∑    ∑   (j - 1) ci j  t i-1 u j-2 ;
                         i=1  j=1
                          4     4
        AY12  =   ∑    ∑   (i - 1) (j - 1) ci j  t i-2 u j-2 ;
                         i=1  j=1 

Здесь  t = (X1 - X1L) / (X1U - X1L), U = (X2 - X2L) / (X2U - X2L). Коэффициенты  ci j  ( i, j = 1, 2, 3, 4 ) вычисляются в подпрограмме IP04R.

Н.С.Бахвалов. Численные методы. Изд - во "Наука", 1973.

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

    SUBROUTINE  IP04R (Y, Y1, Y2, Y12, X1L, X1U, X2L, X2U, X1, X2,
                                          AY, AY1, AY2, AY12, C) 

Параметры

          Y, Y1 -
        Y2, Y12  
вещественные векторы длины  4, содержащие соответственно значения интерполируемой функции, обеих ее частных производных первого порядка и смешанной производной в вершинах заданного элементарного сеточного прямоугольника, пронумерованных начиная с нижней левой вершины против часовой стрелки;
            X1L -
            X1U  
левая и правая координаты вершин элементарного сеточного прямоугольника по первой переменной (тип: вещественный);
            X2L -
            X2U  
нижняя и верхняя координаты вершин элементарного сеточного прямоугольника по второй переменной (тип: вещественный);
X1, X2 - координаты точки, заданной внутри исходного элементарного сеточного прямоугольника, в которой выполняется интерполяция (тип: вещественный);
      AY, AY1 -
       AY2, AY12  
вещественные переменные, значения которых полагаются равными соответственно значениям в точке (X1, X2) интерполируемой функции, ее частных производных первого порядка и смешанной производной;
C - вещественный двумерный массив размеров 4 на 4, в котором помещаются коэффициенты, используемые при бикубической интерполяции.

Версии

IP04D - бикубическая интерполяция функции двух переменных в режиме удвоенной точности; при этом все формальные параметры должны иметь тип DOUBLE PRECISION.

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

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

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

       REAL Y(4), Y1(4), Y2(4), Y12(4), C(4, 4) 
       X1L = 0.0 
       X1U = 0.1 
       X2L = 0.0 
       X2U = 0.15 
       Y(1) = SIN(X1L)*SIN(X2L) 
       Y(2) = SIN(X1U)*SIN(X2L) 
       Y(3) = SIN(X1U)*SIN(X2U) 
       Y(4) = SIN(X1L)*SIN(X2U) 
       Y1(1) = COS(X1L)*SIN(X2L) 
       Y1(2) = COS(X1U)*SIN(X2L) 
       Y1(3) = COS(X1U)*SIN(X2U) 
       Y1(4) = COS(X1L)*SIN(X2U) 
       Y2(1) = SIN(X1L)*COS(X2L) 
       Y2(2) = SIN(X1U)*COS(X2L) 
       Y2(3) = SIN(X1U)*COS(X2U) 
       Y2(4) = SIN(X1L)*COS(X2U) 
       Y12(1) = COS(X1L)*COS(X2L) 
       Y12(2) = COS(X1U)*COS(X2L) 
       Y12(3) = COS(X1U)*COS(X2U) 
       Y12(4) = COS(X1L)*COS(X2U) 
       X1 = 0.06 
       X2 = 0.07 
       CALL  IP04R (Y, Y1, Y2, Y12, X1L, X1U, X2L, X2U, X1, X2, AY,
      *                        AY1, AY2, AY12, C) 
Результаты:
        
           AY = 0.4194o5E-02 
         AY1 = 0.698169E-01 
         AY2 = 0.598171E-01 
       AY12 = 0.995755