Текст подпрограммы и версий ( Фортран )
qs18r.zip  qs18d.zip 
Тексты тестовых примеров ( Фортран )
tqs18r.zip  tqs18d.zip 
Текст подпрограммы и версий ( Си )
qs18r_c.zip  qs18d_c.zip 
Тексты тестовых примеров ( Си )
tqs18r_c.zip  tqs18d_c.zip 
Текст подпрограммы и версий ( Паскаль )
qs18r_p.zip  qs18e_p.zip 
Тексты тестовых примеров ( Паскаль )
tqs18r_p.zip  tqs18e_p.zip 

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

Назначение

Вычисление интеграла

            B
           ∫   f (x)  sin ( w x + φ ) dx 
         A 

с заданной абсолютной погрешностью методом Лонгмана.

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

Пусть отрезку [A, B] принадлежат  n0 + 1 нулей  xA, xA + π/ | w |, ..., xA + n0 π/ | w | = xB функции sin (w x + φ). В случае  n0 ≥ 2 по квадратурной формуле Гаусса с 32 узлами вычисляются интегралы по отрезкам [A, xA] и [xB, B], затем вычисляются интегралы

                                B1
           Vi  =  (- 1)i    ∫   f(x) sin(w x + φ) dx  ,
                             A1
 где     A1  =  xA + i π/ | w |  ,
           B1  =  xA + ( i + 1) π/ | w |  ,
           ( i = 0, 1, ..., k - 1, n0 - k, n0 - k + 1, ... , n0 - 1 )  , 

и за значение интеграла по отрезку [xA, xB] принимается сумма

            k-1 
(1)        ∑   [(- 1)i Δi V0 + (- 1)n0 -1 Δi Vn0 - i -1] / 2i +1  ,
            i =0 

где  n0 = n0, а значение  k  выбирается подпрограммой в соответствии с заданной величиной абсолютной погрешности  Е. B случае  n0 ≤ 1 или при отсутствии на отрезке [A, B] нулей функции sin (w x + φ) интеграл по отрезку [A, B] вычисляется с помощью квадратурной формулы Гаусса с 32 узлами.

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  QS18R (RINT, A, B, F, W, FI, E, L, RA, RB, IERR) 

Параметры

RINT - вещественная переменная, содержащая вычисленное значение интеграла;
A, B - заданные нижний и верхний пределы интегрирования соответственно (тип: вещественный);
F - имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию  f (x);
W - заданное значение параметра  w (тип: вещественный);
FI - заданное значение параметра  φ (тип: вещественный);
E - заданная абсолютная погрешность вычисления интеграла (тип: вещественный);
L - параметр, равный  m + 1, где  m - определяемое пользователем максимально допустимое число членов суммы (1),  L ≥ 3 (тип: целый);
RA, RB - вещественные одномерные массивы длины  L, используемые как рабочие;
IERR - целая переменная для диагностических сообщений; при этом:
IERR=65 - если заданная точность не может быть достигнута при заданном  L.

Версии

QS18D -
 вычисление с удвоенной точностью интеграла 
            B
           ∫   f (x)  sin ( w x + φ ) dx 
         A 

с заданной абсолютной погрешностью методом Лонгмана.

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

UTQS11 - подпрограмма выдачи диагностических сообщений при работе подпрограммы QS18R.
UTQS13 - подпрограмма выдачи диагностических сообщений при работе подпрограммы QS18D.

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

  Параметр  L пользователь может задавать достаточно произвольно; чем больше  L, тем больше шансов, что заданная точность будет достигнута, но и тем больше места будет занято программой в памяти машины.

  В подпрограмме QS18D параметры RINT, A, B, F, W, FI, E, RA, RB имеют тип DOUBLE PRECISION.

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

      FUNCTION  F (X)
      F = X
      RETURN
      END
  
      DIMENSION  RA(20), RB(20)
      EXTERNAL  F
      A = - 100.
      B = 100.
      W = 10.
      FI = 0.
      E = 1.E - 6   
      L = 20
      CALL  QS18R (RINT, A, B, F, W, FI, E, L, RA, RB, IERR)

Результаты:    RINT = - 11.2310439229 ,    IERR  =  0