|
Текст подпрограммы и версий sf62r_p.zip |
Тексты тестовых примеров tsf62r_p.zip |
Вычисление экспоненциального интеграла En(x).
SF62R производит вычисление экспоненциальных интегралов
∞
En(x) = ∫ t -n e -xt dt ,
1
для n = 0, 1, 2, ... и x > 0, а также выражения вида e x En(x).
I.A.Stegun and R.Zucker, Automatic Computing Methods for Special Functions. The Exponential Integral En (x), Journal of Research of the National Bureau of Standards - B. Mathematical Sciences, Vol. 78 B, No. 4, October - December 1974.
procedure SF62R(N :Integer; X :Real; var ENX :Real;
var EXPENX :Real);
Параметры
| N - | заданное значение параметра n (тип: целый); |
| X - | заданное значение аргумента x (тип: вещественный); |
| ENX - | вещественная переменная, значение которой в pезультате работы подпрограммы полагается pавной En (x); |
| EXPENX - | вещественная переменная, значение которой в pезультате работы подпрограммы полагается pавной e x En (x). |
Версии: нет
Вызываемые подпрограммы: нет
Замечания по использованию
|
Подпрограмма проводит вычисления для абсолютных значений N и X. Подпрограмма выделяет несколько специальных случаев:EN(0) = 9*1018, если N ≤ 1; EN(0) = 1 / (N - 1), если N > 1; E0(x) = e - x / x, если x > 9*10 - 18; E0(x) = 9*10 18, если x ≤ 9*10 - 18 . |
Unit tsf62r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF62R_p;
function tsf62r: String;
implementation
function tsf62r: String;
var
N :Integer;
X,ENX,EXPENX :Real;
begin
Result := ''; { результат функции }
N := 1;
X := 0.1;
SF62R(N,X,ENX,EXPENX);
Result := Result + Format(' %20.16f %20.16f ',[ENX,EXPENX]) + #$0D#$0A;
UtRes('tsf62r',Result); { вывод результатов в файл tsf62r.res }
exit;
end;
end.
Результаты:
ENX = 1.822923958416
EXPENX = 2.014642544706