Текст подпрограммы и версий ( Фортран )
qsfpr.zip  qsfpd.zip 
Тексты тестовых примеров ( Фортран )
tqsfpr.zip  tqsfpd.zip 
Текст подпрограммы и версий ( Си )
qsfpr_c.zip  qsfpd_c.zip 
Тексты тестовых примеров ( Си )
tqsfpr_c.zip  tqsfpd_c.zip 
Текст подпрограммы и версий ( Паскаль )
qsfpr_p.zip  qsfpe_p.zip 
Тексты тестовых примеров ( Паскаль )
tqsfpr_p.zip  tqsfpe_p.zip 

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

Назначение

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

            B
     I =  ∫  [ cos(tx) Re F(x) - sin(tx) Im F(x) ] dx ,
          A 

где Re F (x) и  Im F (x) - действительная и мнимая части комплексной функции F(x) действительного переменного  x, на основе квадратурной формулы Филона.

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

Подпрограмма QSFPR вычисляет интеграл I с заданной абсолютной или относительной точностью на основе квадратурной формулы Филона [1], в которой плотность подынтегральной функции F (x) вычисляется в девяти равноотстоящих точках каждого подинтервала.

При делении подинтервала узлы и значения функции F (x) запоминаются для последующего использования [2].

1.  Справочник по специальным функциям. Под ред. М.А.Абрамовица и И.Стиган. - M.: Hаука, 1979, 832 с.
2.  Форсайт Дж., Малькольм M., Моулер K. Машинные методы математических вычислений. - M.: Мир, 1980, 280 с.

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

    SUBROUTINE  QSFPR (FUN, A, B, ABSERR, RELERR, RESULT,
                                             ERREST, NOFUN, FLAG) 

Параметры

FUN - имя комплексной подпрограммы - функции, вычисляющей плотность F (x) подынтегральной функции (должна быть описана в основной программе в операторе EXTERNAL);
A, B - заданные нижний и верхний пределы интегрирования (тип: вещественный);
ABSERR - заданная абсолютная погрешность вычисления интеграла (тип: вещественный);
RELERR - заданная относительная погрешность вычисления интеграла (тип: вещественный);
T - заданное значение параметра  t (тип: вещественный);
RESULT - приближение к интегралу, удовлетворяющее менее жесткой из двух границ погрешности (тип: вещественный);
ERREST - оценка погрешности вычисленного значения интеграла (тип: вещественный);
NOFUN - число вычисленных значений плотности подынтегральной функции F (x), потребовавшихся для получения результата (тип: целый);
FLAG - индикатор надежности:
если FLAG = 0, то RESULT, вероятно, удовлетворяет заданной погрешности,
если FLAG = XXX.YYY, то XXX - число интегралов, на которых не удалось достигнуть заданной точности, а 0.YYY = (B - X0)/(B - A) - граница отрезка [A, X0], на котоpом был израсходован лимит обращений к подпрограмме, вычисляющей функцию FUN.

Версии

QSFPD - вычисление этих же интегралов в режиме удвоенной точности.

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

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

  1. 

Для подпрограммы QSFPD параметры A, B, T, ER, EA, RINT, FLAG, ERREST, а также параметр X, из подпрограммы  FUN имеют тип DOUBLE PRECISION.

  2.  Для подпрограммы QSFPD функция FUN должна быть описана как комплексная двойной точности (см. пример использования).

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

              π                                 π     
          (   ∫  sin10x F(x) dx    =   ∫  sin10x sin x/2 dx  )
              0                                0

      COMPLEX FUNCTION  FUN*16(X)
      COMPLEX*16  ZI
      DOUBLE PRECISION X
      ZI =  (0.D0, 1.D0)
      FUN = -ZI*DSIN(X/2.D0)
      RETURN
      END

      EXTERNAL  FUN
      DOUBLE PRECISION  A, B, PI, T, ER, EA, RINT, FLAG, ERREST
      COMPLEX*16  FUN
      PI = 3.1415926D0
      T = 10.D0
      ER = 1.D-8
      EA = 0.D0
      A = 0.D0
      B = PI
      CALL  QSFPD (FUN, A, B, EA, ER, T, RINT, ERREST, NOFUN, FLAG)

Результаты:

      RINT  =  -1.0025063 * 10-1
      
      NOFUN  =  417 
      FLAG  =  0
      ERREST  =  2.3 * 10-10