Текст подпрограммы и версий ( Фортран )
qs13r.zip 
Тексты тестовых примеров ( Фортран )
tqs13r.zip 
Текст подпрограммы и версий ( Си )
qs13r_c.zip 
Тексты тестовых примеров ( Си )
tqs13r_c.zip 
Текст подпрограммы и версий ( Паскаль )
qs13r_p.zip 
Тексты тестовых примеров ( Паскаль )
tqs13r_p.zip 

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

Назначение

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

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

 QS13R вычисляет интеграл
                             B
                             ∫ f (x) dx 
                            A
с заданной абсолютной  погрешностью E по формулам Гаусса. 

Отрезок интегрирования [A, B] разбивается на K равных частичных отрезков, на каждом из которых применяется квадратурная формула Гаусса с N узлами. Полученные значения интеграла по всем частичным отрезкам суммируются.

Заданная точность достигается:
1.  За счет последовательного увеличения числа узлов квадратурной формулы при фиксированном K.
2.  За счет удвоения числа частичных отрезков разбиения при фиксированном N.

Счет заканчивается, если модуль разности приближенных значений интеграла, полученных при двух последовательных расчетах, не привосходит заданной величины E. За приближенное значение интеграла принимается результат последнего расчета.

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

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

    SUBROUTINE  QS13R (RINT, A, B, F, E, K, N, L, IERR) 

Параметры

RINT - вещественная переменная, содержащая вычисленное значение интеграла;
A, B - заданные нижний и верхний пределы интегрирования (тип: вещественный);
F - имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию f (x);
E - заданная абсолютная погрешность вычисления интеграла (тип: вещественный);
K - целая переменная, задающая начальное число частичных отрезков разбиения (K ≤ 524288);
N - целая переменная, задающая начальное число узлов интегрирования; может принимать только следующие значения: 2, 4, 6, 8, 10, 12, 16, 24, 32, 48, 64, 96;
L - задает режим работы подпрограммы (тип: целый); при этом, если:
L = 0 - то заданная точность достигается за счет увеличения N при фиксированном K;
L = 1 - то заданная точность достигается за счет увеличения K при фиксированном N;
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом:
IERR = 65 - когда заданная точность не может быть достигнута.

Версии: нет

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

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

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

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

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

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

       EXTERNAL  F
       A = 1.
       W = EXP(3.)
       E = 0.0000001
       K = 1
       N = 2
       L = 0
       CALL  QS13R (RINT, A, B, F, E, K, N, L, IERR)

Результаты:

       RINT  =  1.9999999999
       N  =  32
       K  =  1
       IERR  =  0

2.    EXTERNAL  F
       A = 1.
       B = EXP(3.)
       E = 0.0000001
       K = 1
       N = 2
       L = 1
       CALL  QS13R (RINT, A, B, F, E, K, N, L, IERR)

Результаты:

       RINT  =  1.9999999987
       N  =  2
       K  =  1024
       IERR  =  0