Текст подпрограммы и версий ( Фортран )
qs60r.zip 
Тексты тестовых примеров ( Фортран )
tqs60r.zip 
Текст подпрограммы и версий ( Си )
qs60r_c.zip 
Тексты тестовых примеров ( Си )
tqs60r_c.zip 
Текст подпрограммы и версий ( Паскаль )
qs60r_p.zip 
Тексты тестовых примеров ( Паскаль )
tqs60r_p.zip 

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

Назначение

Вычисление определенного трехкратного интеграла по тpехмеpному прямоугольному параллелепипеду.

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

QS60R вычисляет s - кратный (s = 3) интеграл по s - меpному прямоугольному параллелепипеду с заданной абсолютной погрешностью.

Заменой переменных данный s - мерный прямоугольный параллелепипед переводится в единичный куб G, и интеграл вычисляется по этому кубу. B основу метода положены кубатурные формулы pазличной точности:

     Q1(s), Q2(s), Q3(s) . 

Куб G разбивается на 2s равных кубов Gk (k = 1, 2, ..., 2s). По каждому из Gk от подинтегральной функции вычисляются Q1 (s) и Q2 (s) и проверяется условие Is*| Q2 (s) - Q1 (s) | > E , где Is - якобиан исходной замены переменных, E - абсолютная погрешность вычислений. Если это условие не выполнено, то за приближенное значение интеграла по Gk принимается Q3(s), если же для Gk это условие выполняется, то весь процесс снова повторяется для этого Gk.

Если при дроблении кубов наступит момент, когда об'ем какого - либо куба будет машинным нулем, то интеграл для этого куба полагается равным нулю и вычисления продолжаются для следующего куба Gk.

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

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

    SUBROUTINE  QS60R (RINT, A1, A2, F, EPS, IERR) 

Параметры

RINT - вычисленное значение интеграла (тип: вещественный);
A1 - вещественный вектоp длины 3, в котоpом задаются нижние пределы интегрирования;
A2 - вещественный вектоp длины 3, в котоpом задаются верхние пределы интегрирования;
F - имя вещественной подпрограммы - функции вычисления подинтегральной функции;
EPS - заданная абсолютная погрешность вычисления интеграла (тип: вещественный);
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы (см. "Замечания по использованию").

Версии: нет

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

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

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

 

Пользователь должен задавать значение EPS абсолютной погрешности вычисления интеграла на шаге. Для гладких функций полная погрешность приближенного значения интеграла будет  o (EPS). В случае не гладких или очень хоpоших функций полная погрешность может значительно отличаться от величины EPS. Для вычисления истинной погрешности можно просчитать интеграл для различных значений EPS.

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

При работе подпрограммы может произойти следующее событие (назовем это событие V): при дроблении кубов об'ем какого - либо куба будет машинным нулем. в этом случае работа программы не прекращается: интеграл для этого куба полагается равным нулю, вычисления продолжаются для следующего куба и переменной IERR присваивается значение 65. Если же при работе программы событие V не произошло ни разу, то переменной IERR присваивается значение нуль. Таким образом, знание на выходе программы значения IERR дает возможность пользователю контpолировать точность вычисления интеграла.

Возможны случаи, когда аргумент функции за счет погрешности округления выйдет за границу области интегрирования. Поэтому, иногда, разумно доопределить функцию в окрестности граничной точки нулем, при этом достаточно взять радиус окрестности равным 10 - 9.

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

      EXTERNAL  F
      DIMENSION  A1(3), A2(3)
      A1 (1) = 0.
      A1 (2) = 0.
      A1 (3) = 0.
      A2 (1) = 1.
      A2 (2) = 2.
      A2 (3) = 3.
      EPS = 0.001
      CALL  QS60R (RINT, A1, A2, F, EPS, IERR)
       .
       .
      END

      FUNCTION  F(X)
      DIMENSION  X(3)
      F = 3*( X(1)**2 + X(2)**2 + X(3)**2 )
      RETURN
      END

Результаты:   RINT  =  84 ,   IERR  =  0