Текст подпрограммы и версий ( Фортран ) qs19r.zip qs19d.zip |
Тексты тестовых примеров ( Фортран ) tqs19r.zip tqs19d.zip |
Текст подпрограммы и версий ( Си ) qs19r_c.zip qs19d_c.zip |
Тексты тестовых примеров ( Си ) tqs19r_c.zip tqs19d_c.zip |
Текст подпрограммы и версий ( Паскаль ) qs19r_p.zip qs19e_p.zip |
Тексты тестовых примеров ( Паскаль ) tqs19r_p.zip tqs19e_p.zip |
Вычисление определенного интеграла от осциллирующих функций методом Лонгмана.
Пусть отрезку [A, B], A ≤ B, принадлежат n0 + 1 нулей x0, x1,..., xn0 функции f (x), n0 ≥ 2. По квадратурной формуле Гаусса с 32 узлами вычисляются интегралы по отрезкам [A, x0] и [xn0, B], затем вычисляются интегралы
B1 Vi = (- 1) i ∫ f (x) dx , A1 где A1 = x i , B1 = x i +1 , ( i = 0, 1, ..., k - 1, n0 - k, n0 - k + 1, ... , n0 - 1 ) ,
и за значение интеграла по отрезку [x0, xn0] принимается сумма
k-1 (1) ∑ [(- 1)i Δi V0 + (- 1)n0 - 1 Δi Vn0 - i - 1 ] / 2i +1 , i =0
причем значение k выбирается подпрограммой в соответствии с заданной величиной абсолютной погрешности Е.
Longman I.M. A Method for the Numerical Evaluation of Finite Integrals of Oscillatory Functions. - Math. Comput., 1960, Vol.14, N 69, p.53 - 59.
Жилейкин Я.М., Кукаркин А.Б. Приближенное вычисление интегралов от быстроосциллирующих функций - М.: Изд - во Моск. ун - та, 1987.
SUBROUTINE QSF19R (RINT, A, B, F, E, L, XA, XB, RA, RB, IERR)
Параметры
RINT - | вещественная переменная, содержащая вычисленное значение интеграла; |
A, B - | заданные нижний и верхний пределы интегрирования соответственно, A ≤ B (тип: вещественный); |
F - | имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию f (x); |
E - | заданная абсолютная погрешность вычисления интеграла (тип: вещественный); |
L - | параметр, равный m + 1, где m - определяемое пользователем максимально допустимое число членов суммы (1), L ≥ 3 (тип: целый); |
XA - | вещественный одномерный массив длины L, содержащий L последовательных нулей функции f (x), принадлежащих отрезку интегрирования, которые расположены в порядке возрастания, начиная с наименьшего; |
XB - | вещественный одномерный массив длины L, содержащий L последовательных нулей функции f (x), принадлежащих отрезку интегрирования, которые расположены в порядке убывания, начиная с наибольшего; |
RA, RB - | вещественные одномерные массивы длины L, используемые как рабочие; |
IERR - | целая переменная для диагностических сообщений; при этом: |
IERR=65 - | если заданная точность не может быть достигнута при заданном L. |
Версии
QS19D - | вычисление с удвоенной точностью определенного интеграла от осциллирующих функций методом Лонгмана. |
Вызываемые подпрограммы
UTQS11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы QS19R. |
UTQS13 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы QS19D. |
Замечания по использованию
Параметр L пользователь может задавать достаточно произвольно; чем больше L, тем больше шансов, что заданная точность будет достигнута, но и тем больше места будет занято программой в памяти машины. | |
В подпрограмме QS19D параметры RINT, A, B, F, E, XA, XB, RA, RB имеют тип DOUBLE PRECISION. |
FUNCTION F (X) F = X * SIN(10. * X) RETURN END DIMENSION XA(20), XB(20), RA(20), RB(20) EXTERNAL F A = - 100. B = 100. E = 1.E - 6 L = 20 DO 1 I = 1, 20 XB(I) = 0.3141592654 * (319 - I) 1 XA(I) = - XB(I) CALL QS19R (RINT, A, B, F, E, L, XA, XB, RA, RB, IERR) Результаты: RINT = - 11.2310439137 , IERR = 0