Текст подпрограммы и версий ( Фортран )
qsfar.zip 
Тексты тестовых примеров ( Фортран )
tqsfar.zip 
Текст подпрограммы и версий ( Си )
qsfar_c.zip 
Тексты тестовых примеров ( Си )
tqsfar_c.zip 
Текст подпрограммы и версий ( Паскаль )
qsfar_p.zip 
Тексты тестовых примеров ( Паскаль )
tqsfar_p.zip 

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

Назначение

 Вычисление интегралов
                  B
          I1 = ∫  f (x) sin( ρ x + φ ) dx ,
                A
                  B
          I2 = ∫  f (x) cos( ρ x + φ ) dx
                A 

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

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

Интегралы I1 и I2 вычисляются для A и B таких, что | (В - А) | ≥ 10, при этом считается, что бесконечные пределы заданы близкими к минимальному (максимальному) числам, представимым на машине. Вычисление I1 и I2 осуществляется последовательно по частичным отрезкам, длина которых удваивается.

Hа каждом частичном отрезке интегралы считаются с автоматическим выбором шага по формулам интерполяционного типа, точным для полиномов 5 - ой степени, с весом  exp i (ρ x + φ). Предполагается, что особенность подинтегральной функции локализована на отрезке [α, β]  [A, B].

Если какой-то частичный отрезок пересекается с отрезком [α, β], то на их пересечении вычисления ведутся с принудительным дроблением шага интегрирования. Интегралы вычисляются с погрешностью E (1 + | Ii |),  i = 1, 2 , где E задается пользователем, при этом определяется также абсолютная погрешность вычисленного значения интеграла.

О.В.Брушлинская, Л.Г.Васильева. Набор стандартных программ приближенного вычисления однократных интегралов c автоматическим выбором шага. Сб. "Численный анализ на ФОРТРАНе", вып. 8, Изд-во МГУ, 1974.

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

    SUBROUTINE  QSFAR ( RINT1, RINT2, A, B, F, RO, FI, E, ALFA,
                                              BETA, XA, E1, L1, L2) 

Параметры

       RINT1 -
       RINT2  
вещественные переменные, содержащие вычисленные значения интегралов I1 и I2;
A, B - заданные нижний и верхний пределы интегрирования (тип: вещественный);
F - имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию  f (x);
RO - заданное значение параметра  ρ (тип: вещественный);
FI - заданное значение параметра  φ (тип: вещественный);
E - заданная абсолютная погрешность вычисления интегралов (тип: вещественный);
       ALFA -
       BETA  
заданные начало и конец отрезка, содержащего особенность подинтегральной функции (тип: вещественный);
XA - вещественная переменная, служащая для диагностических сообщений. Hа выходе из подпрограммы XA pавно либо - 3.4E38, если заданная точность достигнута, либо кооpдинате "особенности" подинтегральной функции;
E1 - вещественная переменная, содержащая оценку абсолютной погрешности вычисленного интеграла;
L1, L2 - задают режим работы подпрограммы (тип: целый); при этом, если:
 

L1 = 1 и L2 = 0, то вычисляется интеграл I1;

L1 = 0 и L2 = 1, то вычисляется интеграл I2;

L1 = 1 и L2 = 1, то вычисляются интегралы I1 и I2;

Версии: нет

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

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

  Точка отрезка [α, β] квалифицируется подпрограммой как "особенность" подинтегральной функции, если в ее окрестности шаг интегрирования стал предельно малым.

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

      FUNCTION  F(X)
      F = EXP( (- (X-1)**2)/0.0001)
      RETURN
      END

      EXTERNAL  F
      A = -5
      B = 10**5
      ALFA = 0
      BETA = 1
      RO = 10
      E = 1.E-8
      FI = 0
      L1 = 1
      L2 = 0
      CALL  QSFAR (RINT1, RINT2, A, B, F, RO, FI, E, ALFA, BETA, 
     *                          XA, E1, L1, L2)

Результаты:

      RINT1  =  -0.0096184469316
      XA  =  -3.4E38
      E1  =  5.4581*10-9