Текст подпрограммы и версий ( Фортран )
qss1r.zip  qss1d.zip 
Тексты тестовых примеров ( Фортран )
tqss1r.zip  tqss1d.zip 
Текст подпрограммы и версий ( Си )
qss1r_c.zip  qss1d_c.zip 
Тексты тестовых примеров ( Си )
tqss1r_c.zip  tqss1d_c.zip 
Текст подпрограммы и версий ( Паскаль )
qss1r_p.zip  qss1e_p.zip 
Тексты тестовых примеров ( Паскаль )
tqss1r_p.zip  tqss1e_p.zip 

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

Назначение

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

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

 Подпрограмма QSS1R вычисляет интеграл
            B
           ∫ f (x) dx 
          A 

с заданной абсолютной погрешностью E по обобщенной квадратурной формуле Симпсона с шагом  h = (B - A)/K,  где K - число частичных отрезков разбиения.

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

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

    SUBROUTINE  QSS1R (RINT, A, B, F, E, K, IERR) 

Параметры

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

Версии

QSS1D - вычисление с удвоенной точностью определенного интеграла по обобщенной квадратурной формуле Симпсона.

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

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

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

 

Проводятся два последовательных просчета интеграла по всему отрезку интегрирования по K и 2K частичным отрезкам. Если абсолютная величина разности этих двух последовательных просчетов не превосходит E, то счет заканчивается и за значение интеграла принимается результат последнего просчета. B противном случае, значение K удваивается и процесс повторяется.

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

Максимальное значение K, котоpое можно задавать, не должно превосходить 524288. Если заданная точность не может быть достигнута, то K полагается равным 1048676.

При выходе из подпрограммы значение K полагается равным числу частичных отрезков разбиения, при котоpом проводился последний просчет интеграла.

В подпрограмме QSS1D параметры RINT, A, B, F, E имеют тип DOUBLE PRECISION.

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

      REAL  FUNCTION  F(X)
      REAL  X
      F = 1./ (1. + COS(X))
      RETURN
      END

      EXTERNAL  F
      INTEGER  K
      REAL  F, RINT, A, B, E
      A = -1.570796326795
      B = 1.570796326795
      E = 0.0000001
      K = 1
      CALL  QSS1R (RINT, A, B, F, E, K, IERR)

Результаты:

      RINT  =  2.0000000012

      K  =  256
      IERR  =  0