Текст подпрограммы и версий
qsk2r_p.zip  qsk2e_p.zip 
Тексты тестовых примеров
tqsk2r_p.zip  tqsk2e_p.zip 

Подпрограмма:  QSK2R (модуль QSK2R_p)

Назначение

Вычисление определенного интеграла по обобщенной квадратурной формуле Ньютона - Котеса, точной для многочленов девятой степени.

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

 Подпрограмма QSK2R вычисляет интеграл
            B
           ∫ f (x) dx 
          A 

по обобщенной формуле Ньютона - Котеса с автоматическим выбором шага.

G.E.Forsythe, M.A.Malkolm, C.B.Moler. Computer Methods for Mathematical Computations. 1977 by Prentice - hall, INC.

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

procedure QSK2R(FUN :Func_F1; A :Real; B :Real; ABSERR :Real;
                RELERR :Real; var RESULT_ :Real; var ERREST :Real;
                var NOFUN :Integer; var FLAG :Real);

Параметры

FUN - имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию  f (x);
A, B - заданные нижний и верхний пределы интегрирования (тип: вещественный);
ABSERR - заданная абсолютная погрешность вычисления интеграла (тип: вещественный);
RELERR - заданная относительная погрешность вычисления интеграла (тип: вещественный);
RESULT_ - вещественная переменная, содержащая вычисленное значение интеграла;
ERREST - вещественная переменная, содержащая оценку погрешности вычисленного значения интеграла;
NOFUN - целая переменная, содержащая число вычисленных значений подинтегральной функции, потребовавшихся для получения результата;
FLAG - вещественная переменная, служащая для хаpактеристики надежности вычисленного результата; при этом:
если FLAG = 0., то полученный результат с большой вероятностью удовлетворяет заданной погрешности;
если FLAG = XXX.YYY, то XXX - число интервалов, на которых не удалось достигнуть заданной точности, а 0.YYY = (B - X0)/(B - A), где X0 - граница отрезка [A, X0], на котоpом был израсходован лимит обращений к подпрограмме - функции.

Версии

QSK2E - вычисление определенного интеграла по обобщенной формуле Ньютона - Котеса, точной для многочленов девятой степени от функции, заданной с расширенной (Extended) точностью.

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

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

  B подпрограмме QSK2E параметры FUN, A, B, ABSERR, RELERR, RESULT_, ERREST, FLAG имеют тип Extended.

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

Unit TQSK2R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, FQSK2R_p, QSK2R_p;

function TQSK2R: String;

implementation

function TQSK2R: String;
var
NOFUN :Integer;
A,B,ABSERR,RELERR,RESULT_,ERREST,FLAG :Real;
begin
Result := '';  { результат функции }
A  := 0.0;
B  := 2.0;
RELERR  := 1.0E-10;
ABSERR  := 0.0;
QSK2R(FQSK2R,A,B,ABSERR,RELERR,RESULT_,ERREST,NOFUN,FLAG);
Result := Result + Format('%s',['  RESULT_=']);
RЕSult := Result + Format('%20.16f ',[RESULT_]);
Result := Result + Format('%s',['   ERREST=']);
Result := Result + Format('%20.16f ',[ERREST]) + #$0D#$0A;
if ( FLAG  <>  0.0 ) 
 then begin
       Result := Result + Format('%s',['  FLAG = ']);
       Result := Result + Format('%20.16f ',[FLAG]) + #$0D#$0A;
      end;
Result := Result + Format('%10d ',[NOFUN]) + #$0D#$0A;
UtRes('TQSK2R',Result);  { вывод результатов в файл TQSK2R.res }
exit;
end;

end.

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

function fqsk2r(X :Real): Real;

implementation

function fqsk2r(X :Real): Real;
begin
{ Result - прототип имени функции FUN на FORTRANe }
if ( X  =  0.0 ) 
 then Result := 1.0;
if ( X  <>  0.0 ) 
 then Result := Sin(X)/X;
exit;
end;

end.
Результаты:

      RESULT_  =  1.6054

      ERREST  =  0.
      NOFUN   =  33
      FLAG    =  0.