Текст подпрограммы и версий ( Фортран )
ii10r.zip , ii10d.zip
Тексты тестовых примеров ( Фортран )
tii10r.zip , tii10d.zip
Текст подпрограммы и версий ( Си )
ii10r_c.zip , ii10d_c.zip
Тексты тестовых примеров ( Си )
tii10r_c.zip , tii10d_c.zip
Текст подпрограммы и версий ( Паскаль )
ii10r_p.zip , ii10e_p.zip
Тексты тестовых примеров ( Паскаль )
tii10r_p.zip , tii10e_p.zip

Подпрограмма:  I I10R

Назначение

Вычисление центральных разностей таблично заданной функции на равномерной сетке.

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

Пусть мы имеем таблицу значений вещественной функции  y в узлах некоторой равномерной сетки:

        y0 , y1 , y2 , y3 , y4 , ... , yn . 

Тогда центральные разности первого порядка определяются следующими соотношениями:

     δ1 y1/2 = y1 - y0 ,     δ1 y3/2 = y2 - y1 ,     δ1 y5/2 = y3 - y2 , ... 

Центральные разности второго порядка выражаются через центральные разности первого порядка следующим образом:

    δ 2 y1 = δ1 y3/2 - δ1 y1/2 ,    δ 2 y2 = δ1 y5/2 - δ1 y3/2 , ... 

Формулы общего вида для вычисления центральных разностей имеют вид:

   δ 2j + 1 yi + 1/2 = δ 2j yi + 1 - δ 2j yi     и
   δ 2j yi = δ 2j - 1 yi + 1/2 - δ 2j - 1 yi - 1/2 . 

И.С.Березин, Н.П.Жидков, Методы вычислений, т. 1, M., 1962.

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

    SUBROUTINE  I I10R (MU, NL, NS, NU, NO, LO, Y) 

Параметры

MU - заданное число стpок, в описании размерности двумерного массива  Y в подпрограмме, вызывающей данную подпрограмму (см. ниже) (тип: целый);
         NL, NS -
         NU  
определяют расположение в двумерном массиве  Y заданных значений функции, а именно, значения функции  y0, y1, y2, ..., yn должны быть последовательно расположены в следующих компонентах массива  Y: Y (NL, 1), Y (NL + NS, 1), Y (NL + 2 * NS, 1), ..., Y (NU, 1) (тип: целый);
NO - заданный максимальный порядок вычисляемых разностей (тип: целый);
LO - определяет порядок расположения вычисленных разностей в массиве Y (тип: целый); при этом если:
LO=0 - то  δ 2j - 1 yi - 1/2 будет расположена в элементе массива  Y (NL + I*NS - [NS/2], 2*J), а  δ 2j yi - в элементе массива  Y (NL + I*NS, 2*J + 1);
LO=1 - то  δ 2j - 1 yi - 1/2 будет расположена в элементе массива  Y (NL + I*NS - [NS/2], J + 1), а  δ 2j yi - в элементе массива  Y (NL + I*NS, J + 1);
LO=2 - то  δ 2j - 1 yi - 1/2 будет расположена в элементе массива  Y (NL + I*NS - [NS/2], J + 1), а  δ 2j yi - в элементе массива  Y (NL + I*NS, J + 2);
Y - вещественный двумерный массив, в котоpом задается таблица значений функции и помещаются вычисленные разности; длина массива  Y должна быть при  LO = 0 pавна  MU * (NO + 1), при  LO = 1 - MU * [(NO + 3)/2], при  LO = 2 - MU * [(NO + 4)/2].

Версии

I I10D - вычисление центральных разностей таблично заданной функции на равномерной сетке с повышенной точностью.

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

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

  1. 

Для I I10D параметр Y должен иметь тип DOUBLE PRECISION.

  2. 

Значение параметра  MU должно быть больше или pавно значению праметра  NU. Tем самым, двумерный массив  Y может быть частью другого двумерного массива большей размерности.

  3. 

Порядок расположения вычисленных разностей в массиве  Y при  LO = 0 приводит к довольно большому расходованию памяти, если нужны только либо четные, либо нечетные разности. Поэтому, если нужны только четные разности, следует положить  LO = 1 и  NS = 1. Для получения же только нечетных разностей надо взять  LO = 2 и  NS = 1.

  4.  Значение  NS всегда дожно быть больше или pавно 1.

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

       DIMENSION  Y(3, 3)
       DATA  Y(1, 1) /1.353352832E-01/, Y(2, 1) /1.053992246E-01/, 
      *            Y(3, 1) /8.208499862E-01/
       MU = 3
       NL = 1
       NS = 1
       NU = 3
       NO = 2
       LO = 0
       CALL  II10R (MU, NL, NS, NU, NO, LO, Y)

Результаты:

   а) значения функции:
      Y(1, 1)  =   1.353352832E-01 ,     Y(2, 1)  =   1.053992246E-01 ,
      Y(3, 1)  =   8.208499862E-01 ;

   б) первые разности:
      Y(1, 2)  =   0. ,     Y(2, 2)  =  -2.993605860E-02 ,
      Y(3, 2)  =   7.154507616E-01 ;

   в) вторые разности:
      Y(1, 3)  =  0. ,      Y(2, 3)  =   7.453868202E-01 ,     Y(3, 3)  =  0.