Текст подпрограммы и версий
qsr1r_p.zip  qsr1e_p.zip 
Тексты тестовых примеров
tqsr1r_p.zip  tqsr1e_p.zip 

Подпрограмма:  QSR1R (модуль QSR1R_p)

Назначение

Вычисление определенного интеграла по квадратурной формуле Pомберга.

Математическое описание

 QSR1R вычисляет интеграл
            b
           ∫ f (x) dx 
          a 

по квадратурной формуле Pомберга с заданным числом узлов интегрирования.

Н.С.Бахвалов. "Численные методы", т.1, "Hаука", 1973.

Использование

procedure QSR1R(var RINT :Real; A :Real; B :Real; F :Func_F1;
                var K :Integer; var IERR :Integer);

Параметры

RINT - вещественная переменная, содержащая вычисленное значение интеграла;
A, B - заданные нижний и верхний пределы интегрирования (тип: вещественный);
F - имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию  f (x);
K - целая переменная, определяющая число узлов интегрирования N ( N = 2K + 1, 0 < K≤ 20 );
IERR - целая переменная, указывающая причину окончания вычислений: если интеграл сосчитан, то IERR = 0, в противном случае IERR = 65.

Версии

QSR1E - вычисление с расширенной (Extended) точностью определенного интеграла по квадратурной формуле Pомберга.

Вызываемые подпрограммы

UTQS11 - подпрограмма выдачи диагностических сообщений при работе подпрограммы QSR1R.
UTQS13 - подпрограмма выдачи диагностических сообщений при работе подпрограммы QSR1E.

Замечания по использованию

 

При K > 20 выдается диагностическое сообщение "заданное значение K выходит за пределы допустимых значений".

В подпрограмме QSR1E параметры RINT, A, B, F имеют тип Extended.

Пример использования

Unit TQSR1R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, FQSR1R_p, QSR1R_p;

function TQSR1R: String;

implementation

function TQSR1R: String;
var
K,IERR :Integer;
A,B,RINT :Real;
begin
Result := '';  { результат функции }
A := 0.0;
B := 1.0;
K := 10;
QSR1R(RINT,A,B,FQSR1R,K,IERR);
Result := Result + Format(' %20.16f ',[RINT]) + #$0D#$0A;
Result := Result + Format(' %5d %5d ',[K,IERR]) + #$0D#$0A;
UtRes('TQSR1R',Result);  { вывод результатов в файл TQSR1R.res }
exit;
end;

end.

Unit FQSR1R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc;

function FQSR1R(X :Real): Real;

implementation

function FQSR1R(X :Real): Real;
begin
{ Result - прототип имени функции FQSR1R на FORTRANe }
Result := 1.0/(1.0+Exp(X));
exit;
end;

end.

Результаты:
 
      RINT  =  0.37988549298

      K = 10
      IERR = 0