|
Текст подпрограммы и версий ( Фортран ) 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 вычисляет интеграл
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