Текст подпрограммы и версий
qsl1r_p.zip  qsl1e_p.zip 
Тексты тестовых примеров
tqsl1r_p.zip  tqsl1e_p.zip 

Подпрограмма:  QSL1R (модуль QSL1R_p)

Назначение

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

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

QSL1R вычисляет интеграл
            B
           ∫ f (x) dx 
          A 

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

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

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

procedure QSL1R(var RINT :Real; var A :Real; var B :Real; F :Func_F1;
                E :Real);

Параметры

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

Версии

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

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

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

 

Подпрограмма не гарантирует заданную погрешность, хотя в большинстве случаев интегралы будут вычислены с тpебуемой точностью.

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

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

Unit TQSL1R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, FQSL1R_p, QSL1R_p;

function TQSL1R: String;

implementation

function TQSL1R: String;
var
RINT,A,B,E :Real;
begin
Result := '';  { результат функции }
A := 0.0;
B := 1.0;
E := 0.00000001;
QSL1R(RINT,A,B,FQSL1R,E);
Result := Result + Format(' %20.16f ',[RINT]) + #$0D#$0A;
UtRes('TQSL1R',Result);  { вывод результатов в файл TQSL1R.res }
exit;
ЕND;

end.

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

function FQSL1R(X :Real): Real;

implementation

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

end.

Результат:   RINT  =  1.9999963224