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

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

Назначение

 Вычисление интегралов вида
             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