Текст подпрограммы и версий qsk2r_p.zip qsk2e_p.zip |
Тексты тестовых примеров tqsk2r_p.zip tqsk2e_p.zip |
Вычисление определенного интеграла по обобщенной квадратурной формуле Ньютона - Котеса, точной для многочленов девятой степени.
Подпрограмма QSK2R вычисляет интеграл B ∫ f (x) dx A
по обобщенной формуле Ньютона - Котеса с автоматическим выбором шага.
G.E.Forsythe, M.A.Malkolm, C.B.Moler. Computer Methods for Mathematical Computations. 1977 by Prentice - hall, INC.
procedure QSK2R(FUN :Func_F1; A :Real; B :Real; ABSERR :Real; RELERR :Real; var RESULT_ :Real; var ERREST :Real; var NOFUN :Integer; var FLAG :Real);
Параметры
FUN - | имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию f (x); |
A, B - | заданные нижний и верхний пределы интегрирования (тип: вещественный); |
ABSERR - | заданная абсолютная погрешность вычисления интеграла (тип: вещественный); |
RELERR - | заданная относительная погрешность вычисления интеграла (тип: вещественный); |
RESULT_ - | вещественная переменная, содержащая вычисленное значение интеграла; |
ERREST - | вещественная переменная, содержащая оценку погрешности вычисленного значения интеграла; |
NOFUN - | целая переменная, содержащая число вычисленных значений подинтегральной функции, потребовавшихся для получения результата; |
FLAG - |
вещественная переменная, служащая для
хаpактеристики надежности вычисленного результата;
при этом: если FLAG = 0., то полученный результат с большой вероятностью удовлетворяет заданной погрешности; если FLAG = XXX.YYY, то XXX - число интервалов, на которых не удалось достигнуть заданной точности, а 0.YYY = (B - X0)/(B - A), где X0 - граница отрезка [A, X0], на котоpом был израсходован лимит обращений к подпрограмме - функции. |
Версии
QSK2E - | вычисление определенного интеграла по обобщенной формуле Ньютона - Котеса, точной для многочленов девятой степени от функции, заданной с расширенной (Extended) точностью. |
Вызываемые подпрограммы: нет
Замечания по использованию
B подпрограмме QSK2E параметры FUN, A, B, ABSERR, RELERR, RESULT_, ERREST, FLAG имеют тип Extended. |
Unit TQSK2R_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, FQSK2R_p, QSK2R_p; function TQSK2R: String; implementation function TQSK2R: String; var NOFUN :Integer; A,B,ABSERR,RELERR,RESULT_,ERREST,FLAG :Real; begin Result := ''; { результат функции } A := 0.0; B := 2.0; RELERR := 1.0E-10; ABSERR := 0.0; QSK2R(FQSK2R,A,B,ABSERR,RELERR,RESULT_,ERREST,NOFUN,FLAG); Result := Result + Format('%s',[' RESULT_=']); RЕSult := Result + Format('%20.16f ',[RESULT_]); Result := Result + Format('%s',[' ERREST=']); Result := Result + Format('%20.16f ',[ERREST]) + #$0D#$0A; if ( FLAG <> 0.0 ) then begin Result := Result + Format('%s',[' FLAG = ']); Result := Result + Format('%20.16f ',[FLAG]) + #$0D#$0A; end; Result := Result + Format('%10d ',[NOFUN]) + #$0D#$0A; UtRes('TQSK2R',Result); { вывод результатов в файл TQSK2R.res } exit; end; end. Unit fqsk2r_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc; function fqsk2r(X :Real): Real; implementation function fqsk2r(X :Real): Real; begin { Result - прототип имени функции FUN на FORTRANe } if ( X = 0.0 ) then Result := 1.0; if ( X <> 0.0 ) then Result := Sin(X)/X; exit; end; end. Результаты: RESULT_ = 1.6054 ERREST = 0. NOFUN = 33 FLAG = 0.