Текст подпрограммы и версий ( Фортран ) qs13r.zip |
Тексты тестовых примеров ( Фортран ) tqs13r.zip |
Текст подпрограммы и версий ( Си ) qs13r_c.zip |
Тексты тестовых примеров ( Си ) tqs13r_c.zip |
Текст подпрограммы и версий ( Паскаль ) qs13r_p.zip |
Тексты тестовых примеров ( Паскаль ) tqs13r_p.zip |
Вычисление определенного интеграла по квадратурным формулам Гаусса с разбиением основного отрезка интегрирования на частичные.
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