Текст подпрограммы и версий ( Фортран ) qsf1r.zip qsf1d.zip |
Тексты тестовых примеров ( Фортран ) tqsf1r.zip tqsf1d.zip |
Текст подпрограммы и версий ( Си ) qsf1r_c.zip qsf1d_c.zip |
Тексты тестовых примеров ( Си ) tqsf1r_c.zip tqsf1d_c.zip |
Текст подпрограммы и версий ( Паскаль ) qsf1r_p.zip qsf1e_p.zip |
Тексты тестовых примеров ( Паскаль ) tqsf1r_p.zip tqsf1e_p.zip |
Вычисление интегралов вида B (1) ∫ f (x) SIN (ρx + φ) dx , A B (2) ∫ f (x) COS (ρx + φ) dx A
по формулам интерполяционного типа 5 - й степени точности.
QSF1R вычисляет интегралы (1), (2) или один из них с заданной абсолютной погрешностью E по формулам интерполяционного типа 5 - й степени точности с фиксированным распределением узлов.
Весь отрезок интегрирования A, B разбивается на K равных частичных отрезков; к каждому отрезку применяются формулы интерполяционного типа. Полученные значения интеграла по всем частичным отрезкам суммируются.
Л.Г.Васильева. Набор стандартных программ численного интегрирования с фиксированным распределенем узлов. Сб. "Численный анализ на ФОРТРАНе", вып.8, Изд - во МГУ, 1974.
SUBROUTINE QSF1R (RINT1, RINT2, A, B, F, RO, FI, E, K, L1, L2, IERR)
Параметры
RINT1 - RINT2 | вещественные переменные, содержащие вычисленные значения интегралов (1) и (2) соответственно; |
A, B - | заданные нижний и верхний пределы интегрирования (тип: вещественный); |
F - | имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию f (x); |
RO - | заданное значение параметра ρ (тип: вещественный); |
FI - | заданное значение параметра φ (тип: вещественный); |
E - | заданная абсолютная погрешность вычисления интегралов (тип: вещественный); |
K - | целая переменная, задающая число частичных отрезков разбиения; |
L1, L2 - | задают режим работы подпрограммы (тип: целый); при этом: если |
L1=1,L2=0 - | вычисляется интеграл (1); |
L1=0,L2=1 - | вычисляется интеграл (2); |
L1=1,L2=1 - | вычисляются интегралы (1) и (2); |
IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом: |
IERR=65 - | когда заданная точность не может быть достигнута при максимально возможном числе частичных отрезков разбиения; значение K полагается равным 1048576. |
Версии
QSF1D - | вычисление с удвоенной точностью интегралов вида (1) и (2) по формулам интерполяционного типа 5 - й степени точности. |
Вызываемые подпрограммы
UTQS10 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы QSF1R. |
UTQS12 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы QSF1D. |
Замечания по использованию
Проводятся два последовательных просчета интегралов по всему отрезку интегрирования по K и 2 K частичным отрезкам. Если абсолютная величина разности этих двух последовательных просчетов не превосходит E, то счет заканчивается, и за значения интегралов принимаются pезультаты последнего просчета. B противном случае значение K удваивается и процесс повторяется. При E ≤ 0 происходит только один просчет с заданным K. Максимальное значение K, котоpое можно задавать, не должно превосходить 524288. Если заданная точность не может быть достигнута, то K полагается равным 1048576. При выходе из подпрограммы значение K полагается равным числу частичных отрезков разбиения, при котоpом проводился последний просчет интеграла. В подпрограмме QSF1D параметры RINT1, RINT2, A, B, F, RO, FI, E имеют тип DOUBLE PRECISION. |
REAL FUNCTION F(X) REAL X F = X**4 RETURN END EXTERNAL F INTEGER K, L1, L2 REAL RINT1, RINT2, A, B, F, RO, FI, E A = 0. B = 1. RO = 10. FI = 0. E = 0.0000001 K = 1 L1 = 1 L2 = 1 CALL QSF1R (RINT1, RINT2, A, B, F, RO, FI, E, K, L1, L2, IERR) Результаты: RINT1 = 0.053824477954 RINT2 = - 0.079553512319 K = 2 IERR = 0