Подпрограмма: 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