Текст подпрограммы и версий ( Фортран )
qs14r.zip 
Тексты тестовых примеров ( Фортран )
tqs14r.zip 
Текст подпрограммы и версий ( Си )
qs14r_c.zip 
Тексты тестовых примеров ( Си )
tqs14r_c.zip 
Текст подпрограммы и версий ( Паскаль )
qs14r_p.zip 
Тексты тестовых примеров ( Паскаль )
tqs14r_p.zip 

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

Назначение

Вычисление определенного интеграла от комплекснозначной функции вещественного аргумента по квадратурной формуле Гаусса.

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

Пусть f (x) = f1 (x) + i f (x) - комплекснозначная функция вещественного аргумента, определенная на конечном отрезке [a, b], вычисляется

               b
               ∫ f (x) dx ≈
              a
                                          N
                          ≈ (b - a)   ∑ cj f ( (b - a) yj / 2 + (a + b) / 2 ) / 2 = JN ,
                                         j=1 

где JN = J1N + i J2N,  yj и  cj соответственно узлы и веса Гаусса для отрезка [-1,1],  i = √-1.

Число узлов интегрирования N принимает только следующие значения: 2, 4, 6, 8, 10, 12, 16, 24, 32, 48, 64, 96. Пусть n - номеp элемента указанного списка; обозначим J1N и J2N (N принимает перечисленные значения) через J1(n) и J2(n) соответственно.

B качестве приближенного значения интеграла берется J1 (n + 1) + i J2 (n + 1), если величина

     E(n) = [  (J1(n+1) - J1(n))2 + (J2(n+1) - J2(n))2] / [(J1(n+1))2 + (J2(n+1))2  ]1/2 

меньше или pавна заданной относительной точности вычисления интеграла E.

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

    SUBROUTINE  QS14R (RINT, A, B, F, E, N, IERR) 

Параметры

RINT - вещественный вектоp длины 2 для вычисленных значений J1 (n + 1) и J2 (n + 1);
A, B - заданные нижний и верхний пределы интегрирования (тип: вещественный);
F - имя подпрограммы, вычисляющей подинтегральную функцию f (x);
E - заданная относительная погрешность вычисления интеграла (тип: вещественный);
N - целая переменная, задающая начальное число узлов интегрирования;
IERR - целая переменная для диагностических сообщений:
IERR = 65 - когда список узлов исчерпан, а заданная точность не достигнута, или
(J1(n + 1))2 + (J2(n + 1))2 ≤ 10-10 ;
IERR = 66 - когда заданное число узлов интегрирования не принадлежит списку допустимых значений узлов.

Версии: нет

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

UTQS10 - подпрограмма выдачи диагностических сообщений при работе подпрограммы QS14R.

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

  1. 

Если IERR = 65, то N полагается равным -1.

  2. 

При E ≤ 0 происходит вычисление интеграла только с заданным N.

  3. 

Первый оператор подпрограммы F должен иметь вид:

    SUBROUTINE  F(X, F1, F2)
Здесь:
X   - аргумент функции f(x) (тип: вещественный);
F1 - вещественная переменная, F1 = Re f(x);
F2 - вещественная переменная, F2 = Im f(x).

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

      SUBROUTINE  F(X, F1, F2)
      F1 = 1./ ( X*SQRT(1. + ALOG(X)) )
      F2 = 1./X
      RETURN
      END

      EXTERNAL  F
      DIMENSION  RINT(2)
      INTEGER  N
      REAL  A, B, F, E, RINT
      A = 1.
      B = EXP(3.)
      E = 0.0000001
      N = 2
      CALL  QS14R (RINT, A, B, F, E, IERR)

Результаты:

      RINT (1)  =  1.9999999999
      RINT (2)  =  3.0000000000

      N  =  32