Текст подпрограммы и версий
qsl5r_p.zip  qsl5e_p.zip 
Тексты тестовых примеров
tqsl5r_p.zip  tqsl5e_p.zip 

Подпрограмма:  QSL5R (модуль QSL5R_p)

Назначение

Вычисление определенного интеграла по формулам Лобатто 11 - ой степени точности от функций с локализованной особенностью.

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

 Интеграл
           B
           ∫ f (x) dx  =  I 
          A 

вычисляется с автоматическим выбором шага по формулам Лобатто, точным для полиномов 11 - ой степени, с погрешностью E (1 + | I |), где E задается пользователем.

Считается, что особенность подинтегральной функции локализована на отрезке [α, β]  [A, B], на котором интеграл вычисляется с принудительным дроблением шага интегрирования. Определяется также оценка абсолютной погрешности вычисленного значения интеграла.

О.В.Брушлинская, Л.Г.Васильева. Набор стандартных программ приближенного вычисления однократных интегралов с автоматическим выбором шага. Сб. "Численный анализ на ФОРТРАНе", вып. 8, Изд-во МГУ, 1974.

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

procedure QSL5R(var RINT :Real; var A :Real; var B :Real; F :Func_F1;
                E :Real; var ALFA :Real; var BETA :Real; var XA :Real;
                var E1 :Real);

Параметры

RINT - вещественная переменная, содержащая вычисленное значение интеграла;
A, B - заданные нижний и верхний пределы интегрирования (тип: вещественный);
F - имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию  f (x);
E - заданная абсолютная погрешность вычисления интеграла (тип: вещественный);
       ALFA -
       BETA  
заданные начало и конец отрезка, содержащего особенность подинтегральной функции (тип: вещественный);
XA - вещественная переменная, служащая для диагностических сообщений; на выходе из подпрограммы XA pавно либо - 3.4E38, если заданная точность достигнута, либо координате "особенности" подинтегральной функции;
E1 - вещественная переменная, содержащая оценку абсолютной погрешности вычисленного интеграла.

Версии

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

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

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

 

Точка отрезка [α, β] квалифицируется подпрограммой как "особенность" подинтегральной функции, если в ее окрестности шаг интегрирования стал предельно малым.

В подпрограмме QSL5E параметры RINT, A, B, F, E, ALFA, BETA, XA, E1 имеют тип Extended.

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

Unit TQSL5R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, FQSL5R_p, QSL5R_p;

function TQSL5R: String;

implementation

function TQSL5R: String;
var
A,B,E,ALFA,BETA,RINT,XA,E1 :Real;
begin
Result := '';  { результат функции }
A := 0.0;
B := 1.0;
E := 0.0001;
ALFA := 0.48;
ВЕТА := 0.51;
QSL5R(RINT,A,B,FQSL5R,E,ALFA,BETA,XA,E1);
Result := Result + Format('%20.16f %20.16f %20.16f %20.16f %20.16f ',
 [RINT,XA,E1,A,B]) + #$0D#$0A;
UtRes('TQSL5R',Result);  { вывод результатов в файл TQSL5R.res }
exit;
end;

end.

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

function FQSL5R(X :Real): Real;

implementation

function FQSL5R(X :Real): Real;
label
_2,_1,_4,_3;
begin
{ Result - прототип имени функции FQSL5R на FORTRANe }
if ( X-1.0/2.0 ) < 0
 then goto _2
 else if ( X-1.0/2.0 ) > 0
       then goto _4
       else goto _1;
_2:
Result := 1.0/Sqrt(1.0/2.0-X);
goto _3;
_1:
Result := 1000000.0;
goto _3;
_4:
Result := 1.0/Sqrt(X-1.0/2.0);
_3:
exit;
end;

end.

Результаты:

      RINT  =   2.827894
      XA    =  -3.4E38     
      E1    =   1.967571E-4