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