Текст подпрограммы и версий ( Фортран ) qs60r.zip |
Тексты тестовых примеров ( Фортран ) tqs60r.zip |
Текст подпрограммы и версий ( Си ) qs60r_c.zip |
Тексты тестовых примеров ( Си ) tqs60r_c.zip |
Текст подпрограммы и версий ( Паскаль ) qs60r_p.zip |
Тексты тестовых примеров ( Паскаль ) tqs60r_p.zip |
Вычисление определенного трехкратного интеграла по т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