|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/cat/q_htm_p/qsj2r_p.htm
Дата изменения: Tue Nov 17 13:05:06 2015 Дата индексирования: Sun Apr 10 02:00:34 2016 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий qsj2r_p.zip |
Тексты тестовых примеров tqsj2r_p.zip |
Вычисление определенного интеграла по формуле Гаусса - Якоби с гарантированной точностью.
Подпрограмма QSJ2R вычисляет определенный интеграл
B
∫ ( 1 - x )α ( 1 + x ) β f (x) dx
A
с заданной абсолютной погрешностью по квадратурной формуле Гаусса - Якоби.
procedure QSJ2R(var RINT :Real; var A :Real; var B :Real;
var ALF :Real; var BTA :Real; F :Func_F1;
var N :Integer; EPS :Real; var IERR :Integer);
Параметры
| RINT - | вещественная переменная, содержащая вычисленное значение интеграла; |
| A, B - | заданные нижний и верхний пределы интегрирования, соответственно (тип: вещественный); |
| ALF,BTA - | заданные параметры α и β соответственно, в весовом множителе (1 - x)α (1 + x) β (тип: вещественный); |
| F - | имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию f (x); |
| N - | целая переменная, задающая число узлов интегрирования (2 ≤ N ≤ 512); |
| EPS - | заданная абсолютная погрешность вычисления интеграла (тип: вещественный); |
| IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом: |
| IERR=0 - | когда заданная точность EPS достигнута, N при этом полагается равным числу узлов интегрирования, при котором достигнута заданная точность и вычислено значение интеграла; |
| IERR=1 - | когда заданная точность не может быть достигнута при максимально возможном числе узлов интегрирования (N ≤ 512). |
Версии: нет
Вызываемые подпрограммы
| QSJAC - | подпрограмма, вычисляющая узлы и веса квадратурной формулы Гаусса - Якоби. |
| UTQSJ2 - | подпрограмма выдачи диагностических сообщений. |
Замечания по использованию
|
Перед началом работы подпрограммы число узлов интегрирования N должно быть задано как целое из интервала 2 ≤ N ≤ 256. | |
|
Если интеграл не может быть вычислен с заданной абсолютной
погрешностью EPS, выдается диагностическое сообщение: Подпрограмма QSJ2R: заданная точность не может быть достигнута. |
Unit TQSJ2R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, FQSJ2R_p, QSJ2R_p;
function TQSJ2R: String;
implementation
function TQSJ2R: String;
var
N,IERR :Integer;
ALF,BTA,A,B,EPS,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;
EPS := 1.E-5;
N := 2;
QSJ2R(RINT,A,B,ALF,BTA,FQSJ2R,N,EPS,IERR);
Result := Result +
Format('%20.16f %20.16f %20.16f %20.16f %20.16f %20.16f %5d %5d ',
[A,B,ALF,BTA,EPS,RINT,N,IERR]) + #$0D#$0A;
UtRes('TQSJ2R',Result); { вывод результатов в файл TQSJ2R.res }
exit;
end;
end.
Unit FQSJ2R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc;
function FQSJ2R(X :Real): Real;
implementation
function FQSJ2R(X :Real): Real;
begin
{ Result - прототип имени функции FQSJ2R на FORTRANe }
Result := IntPower(X,15);
exit;
end;
end.
Результаты:
RINT = 0.0000000000
N = 8
IERR = 0