Текст подпрограммы и версий
sf62r_p.zip
Тексты тестовых примеров
tsf62r_p.zip

Подпрограмма:  SF62R (модуль SF62R_p)

Назначение

Вычисление экспоненциального интеграла 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