Текст подпрограммы и версий
qsj1r_p.zip 
Тексты тестовых примеров
tqsj1r_p.zip 

Подпрограмма:  QSJ1R (модуль QSJ1R_p)

Назначение

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

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

 Подпрограмма QSJ1R вычисляет определенный интеграл
            B
           ∫   ( 1 - x )α ( 1 + x ) β  f (x) dx 
         A 
по квадратурной формуле Гаусса - Якоби. 

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

procedure QSJ1R(var RINT :Real; A :Real; B :Real; var ALF :Real;
                var BTA :Real; F :Func_F1; var N :Integer);

Параметры

RINT - вещественная переменная, содержащая вычисленное значение интеграла;
A, B - заданные нижний и верхний пределы интегрирования, соответственно (тип: вещественный);
ALF,BTA - заданные параметры  α и  β соответственно, в весовом множителе (1 - x) α (1 + x)  β (тип: вещественный);
F - имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию  f (x);
N - заданное число узлов интегрирования (2 ≤ N ≤ 512, тип: целый);

Версии: нет

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

QSJAC - подпрограмма, вычисляющая узлы и веса квадратурной формулы Гаусса - Якоби.

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

  Число узлов интегрирования  N на заданном отрезке [A; B] может быть задано лишь как целое из интервала 2 ≤ N ≤ 512.

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

Unit TQSJ1R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, FQSJ1R_p, QSJ1R_p;

function TQSJ1R: String;

implementation

function TQSJ1R: String;
var
N :Integer;
ALF,BTA,A,B,RINT :Real;
X :Array [0..511] of Real;
W :Array [0..511] of Real;
begin
Result := '';  { результат функции }
ALF := 1.0;
ВТА := ALF;
A := -1.0;
B := 1.0;
N := 4;
QSJ1R(RINT,A,B,ALF,BTA,FQSJ1R,N);
Result := Result + Format('%20.16f %20.16f %20.16f %20.16f %20.16f %5d ',
 [A,B,ALF,BTA,RINT,N]) + #$0D#$0A;
UtRes('TQSJ1R',Result);  { вывод результатов в файл TQSJ1R.res }
exit;
end;

end.

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

function FQSJ1R(X :Real): Real;

implementation

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

end.

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