Текст подпрограммы и версий ( Фортран ) 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 |
Вычисление центральных разностей таблично заданной функции на равномерной сетке.
Пусть мы имеем таблицу значений вещественной функции 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.