Текст подпрограммы и версий ( Фортран )
qs12r.zip 
Тексты тестовых примеров ( Фортран )
tqs12r.zip 
Текст подпрограммы и версий ( Си )
qs12r_c.zip 
Тексты тестовых примеров ( Си )
tqs12r_c.zip 
Текст подпрограммы и версий ( Паскаль )
qs12r_p.zip 
Тексты тестовых примеров ( Паскаль )
tqs12r_p.zip 

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

Назначение

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

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

QS12R вычисляет интеграл с заданной абсолютной погрешностью на отрезке интегрирования по формуле

               B
               ∫ f (x) dx ≈
              A
                                          N
                          ≈ (B-A)   ∑ Ci f ( (B-A) yi / 2 + (A+B) / 2 ) / 2 ,
                                         i=1 

где yi и Ci соответственно узлы и веса Гаусса для отрезка [ - 1, 1].

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

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

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

Параметры

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

Версии: нет

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

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

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

 

B процессе вычисления число узлов интегрирования N может принимать только следующие значения:

(1)       2, 4, 6, 8, 10, 12, 16, 24, 32, 48, 64, 96.

Проводится несколько последовательных просчетов, причем для каждого последующего просчета берется очередное число узлов из списка (1).

Если абсолютная величина разности двух последовательных просчетов интеграла не превосходит E, то счет заканчивается, и за значение интеграла принимается результат последнего просчета. Если список (1) исчерпан и заданная точность не достигнута, то N полагается равным - 1.

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

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

      REAL  FUNCTION  F(X)
      REAL  X
      F = 1./ ( X*SQRT(1. + ALOG(X)) )
      RETURN
      END

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

Результаты:

      RINT  =  1.9999999999 ;
      N  =  32