Текст подпрограммы и версий qsr2r_p.zip |
Тексты тестовых примеров tqsr2r_p.zip |
Вычисление определенного интеграла по квадратурной формуле Pомберга с заданной абсолютной погрешностью.
QSR2R вычисляет интеграл b ∫ f (x) dx a
по квадратурной формуле Pомберга с заданной абсолютной погрешностью.
Бахвалов H.C. "Численные методы", т.1, "Hаука", 1973.
procedure QSR2R(var RINT :Real; A :Real; B :Real; F :Func_F1; E :Real; var IERR :Integer);
Параметры
RINT - | вещественная переменная, содержащая вычисленное значение интеграла; |
A, B - | заданные нижний и верхний пределы интегрирования (тип: вещественный); |
F - | имя вещественной подпрограммы - функции, вычисляющей подинтегральную функцию f (x); |
E - | заданная абсолютная погрешность вычисления интеграла (тип: вещественный); |
IERR - | целая переменная, указывающая причину окончания вычислений; если интеграл сосчитан, то IERR = 0, в противном случае IERR = 65. |
Версии: нет
Вызываемые подпрограммы
UTQS11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы QSR2R. |
Замечания по использованию
Если интеграл не может быть вычислен с точностью E, выдается диагностическое сообщение "заданная точность не может быть достигнута". |
Unit TQSR2R_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, FQSR2R_p, QSR2R_p; function TQSR2R: String; implementation function TQSR2R: String; var IERR :Integer; RINT,A,B,E :Real; begin Result := ''; { результат функции } A := 0.0; B := 1.0; E := 0.0000000001; QSR2R(RINT,A,B,FQSR2R,E,IERR); Result := Result + Format(' %20.16f %5d ',[RINT,IERR]) + #$0D#$0A; UtRes('TQSR2R',Result); { вывод результатов в файл TQSR2R.res } exit; end; end. Unit FQSR2R_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc; function FQSR2R(X :Real): Real; implementation function FQSR2R(X :Real): Real; label _1,_2,_3; begin { Result - прототип имени функции FQSR2R на FORTRANe } if ( X ) < 0 then goto _1 else if ( X ) > 0 then goto _2 else goto _1; _1: Result := 1.0; goto _3; _2: Result := X/(Exp(X)-1.0); _3: exit; end; end. Результаты: RINT = 0.77750463411 , IERR = 0