Текст подпрограммы и версий
qsl2r_p.zip  qsl2e_p.zip 
Тексты тестовых примеров
tqsl2r_p.zip  tqsl2e_p.zip 

Подпрограмма:  QSL2R (модуль QSL2R_p)

Назначение

Вычисление определенного интеграла для больших отрезков интегрирования по формулам Лобатто.

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

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

с заданной абсолютной погрешностью E для больших отрезков интегрирования. Оба предела интегрирования или один из них могут быть бесконечными. B этом случае соответствующий предел интегрирования должен полагаться равным максимальному положительному (отрицательному) числу, представимому на машине. Предполагается, что | (B - A) | ≥ 10.

Отрезок интегрирования разбивается на подотрезки Ti,  i = 1, 2, ..., n длины | T1 | = 2, | T2 | = 22,  ... , | Tn | = 2n, на каждом из которых интеграл считается с автоматическим выбором шага по формулам Лобатто по семи узлам (11 - й степени точности). Счет интеграла прекращается, если выполняются следующие условия

  0  ≤  | Ji+1 |2 * ( | Ji |  -  | Ji+1 | ) -1  < E     и
  0  ≤  | Ji+2 |2 * ( | Ji+1 |  -  | Ji+2 | ) -1  < E  , 

где  Ji, Ji + 1, Ji + 2 - значение интеграла на подотрезках  Тi, Ti + 1, Ti + 2.

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

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

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

Параметры

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

Версии

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

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

UTQS10 - подпрограмма выдачи диагностических сообщений при работе подпрограммы QSL2R.
UTQS12 - подпрограмма выдачи диагностических сообщений при работе подпрограммы QSL2E.

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

 

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

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

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

Unit TQSL2R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, FQSL2R_p, QSL2R_p;

function TQSL2R: String;

implementation

function TQSL2R: String;
var
RINT,A,B,E :Real;
begin
Result := '';  { результат функции }
A := 3.0;
B := 1.E18;
E := 1.E-3;
Result := Result + Format('%s',
 [' РЕЗУЛЬТАТЫ РЕШЕНИЯ ЗАДАЧИ:' + #$0D#$0A]) + #$0D#$0A; 
QSL2R(RINT,A,B,FQSL2R,E);
Result := Result + Format(' %20.16f ',[RINT]) + #$0D#$0A;
UtRes('TQSL2R',Result);  { вывод результатов в файл TQSL2R.res }
exit;
end;

end.

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

function FQSL2R(X :Real): Real;

implementation

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

end.

Результат:   RINT  =  5.0000004388 E-01