Текст подпрограммы и версий ( Фортран ) id10r.zip , id10d.zip |
Тексты тестовых примеров ( Фортран ) tid10r.zip , tid10d.zip |
Текст подпрограммы и версий ( Си ) id10r_c.zip , id10d_c.zip |
Тексты тестовых примеров ( Си ) tid10r_c.zip , tid10d_c.zip |
Текст подпрограммы и версий ( Паскаль ) id10r_p.zip , id10e_p.zip |
Тексты тестовых примеров ( Паскаль ) tid10r_p.zip , tid10e_p.zip |
Вычисление первой или второй производной вещественной таблично - заданной функции на равномерной сетке с использованием центральных разностей.
ID10R вычисляет либо первые, либо вторые производные таблично - заданной функции на равномерной сетке с шагом h с использованием центральных разностей по формулам Стирлинга.
И.С.Березин, Н.П.Жидков, Методы вычислений, т.1, M., 1962.
SUBROUTINE ID10R (H, Y, MU, NL, NS, NU, NO, LO, NTH, T, A, E, LA, IERR)
Параметры
H - | заданный шаг равномерной сетки (тип: вещественный); |
Y - | вещественный двумерный массив, в котоpом задается таблица значений функции и центральных разностей (см. описание параметра LO); размерность массива Y должна быть при LO = 0 pавна MU на (NO + 1), при LO = 1 - MU на [(NO + 3)/2], при LO = 2 - MU на [(NO + 4)/2]; |
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); расположение в массиве Y центральных разностей определяется ниже при описании параметра LO (тип: целый); |
NO - | заданный максимальный порядок разностей, которые используются в конечно - разностных аппроксимациях производных (тип: целый); |
LO - | определяет порядок расположения заданных центральных разностей в массиве Y (тип: целый); при этом если: |
LO = 0 - | то δ 2j - 1yi - 1/2 должна быть расположена в элементе массива Y (NL + I* NS - [NS/2], 2*J), а δ 2jyi - в элементе массива Y (NL + I*NS, 2*J + 1); |
LO = 1 - | то δ 2j - 1yi - 1/2 должна быть расположена в элементе массива Y (NL + I* NS - [NS/2], J + 1), а δ 2jyi - в элементе массива Y (NL + I*NS, J + 1); |
LO = 2 - | то δ 2j - 1yi - 1/2 должна быть расположена в элементе массива Y(NL + I* NS - [NS/2], J + 1), а δ 2jyi - в элементе массива Y (NL + I*NS, J + 2); |
NHT - | полагается равным 1, если надо вычислить первую производную, или 2, если - вторую; |
T - | заданная точность вычисления производных (тип: вещественный); |
A - | вещественный вектоp длины NU, в котоpом помещаются вычисленные значения первой или второй производной последовательно в следующем порядке A (NL), A (NL + NS), A (NL + 2*NS), ... ,A (NU); |
E - | вещественный вектоp длины NU, в котоpом помещаются последние члены ряда, использованные в конечно - разностной аппроксимации, в следующем порядке E (NL), E (NL + NS), E (NL + 2*NS),...,E (NU); |
LA - | целая переменная, значение которой полагается равным наивысшему порядку разностей, фактически использованных в вычислениях; |
IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом: |
IERR= 1 - | когда для достижения заданной точности требуются разности более высокого порядка, чем они заданы при обращении к подпрограмме; производные вычисляются, хотя требуемая точность не достигнута; |
IERR= 2 - | когда разности порядка NO pасходятся; производные вычисляются, хотя требуемая точность не достигнута; |
IERR= 3 - | когда разности порядка LA (LA < NO) расходятся; производные вычисляются, хотя требуемая точность не достигнута; |
IERR=65 - | когда значение NTH ≠ 1 или ≠ 2; |
IERR=66 - | когда неправильно задан порядок разностей; порядок разностей должен быть по крайней меpе, не ниже порядка вычисляемой производной; |
IERR=67 - | когда не заданы разности нечетного порядка и требуется вычислить первую производную; |
IERR=68 - | когда не заданы разности четного порядка и требуется вычислить вторую производную. |
Версии
ID10D - | вычисление первой или второй производной вещественной таблично - заданной функции на pавномеpной сетке с использованием центральных разностей с повышенной точностью. |
Вызываемые подпрограммы
UTID10 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы ID10R. |
UTID11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы ID10D. |
Замечания по использованию
1. |
Для ID10D параметры H, Y, T, A и E должны иметь тип DOUBLE PRECISION. | |
2. |
Значение параметра MU должно быть больше или pавно значению параметра NU. | |
3. |
Формула вычисления первой производной использует разности только нечетных порядков. Поэтому можно задать LO = 2 и NS = 1. | |
4. |
Формула вычисления второй производной использует разности только четных порядков. Поэтому можно задать LO = 1 и NS = 1. | |
5. |
Заданная точность считается достигнутой, если следующий член ряда конечно - разностной аппроксимации меньше или pавен T. | |
6. |
Конечно - разностные аппроксимации не могут быть использованы в конце таблицы задания функции. Поэтому следует увеличить таблицу значений функции и ее разностей перед обращением к подпрограмме для вычисления производных вблизи конца таблицы. | |
7. | Для вычисления соответствующего числа центральных разностей рекомендуется использовать подпрограмму I I10R. |
DIMENSION Y(10, 5), A(10), E(10) H = 0.25 XN = 2. X = XN - H NTH = 1 T = 1.E-4 DO 1 I = 1, 10 X = X + H Y(I, 1) = EXP(-X) 1 CONTINUE MU = 10 NL = 1 NS = 1 NU = 10 NO = 6 LO = 2 CALL I I10R (MU, NL, NS, NU, NO, LO, Y) CALL ID10R (H, Y, MU, NL, NS, NU, NO, LO, NTH, T, A, E, * LA, IERR) Результат: X A E 2. -6.207939493-02 0.000000000+00 2.25 -1.081979987-01 2.160001819-05 2.50 -8.205740855-02 1.682211116-05 2.75 -6.392797405-02 -8.498944868-06 3.00 -4.978715625-02 -6.618985062-06 3.25 -3.877427628-02 -5.154870644-06 3.50 -3.019743673-02 -4.014617251-06 3.75 -2.343970501-02 7.495577201-05 4.00 -1.832136756-02 7.671346584-05 4.25 -8.102809959-03 0.000000000+00