Текст подпрограммы и версий
sf28r_p.zip , sf28e_p.zip
Тексты тестовых примеров
tsf28r_p.zip , tsf28e_p.zip

Функция:  SF28R (модуль SF28R_p)

Назначение

Вычисление модифицированной функции Бесселя первого рода нулевого порядка  I0 (x).

Математическое описание

SF28R вычисляет модифицированную функцию Бесселя первого рода нулевого порядка  I0 (x) для вещественных  x.

J.F.Hart, E.W.Cheney, C.L.Lawson et al, Computer Approximations, Wiley, New York, 1968.

Использование

function SF28R(X :Real; var IERR :Integer): Real;

Параметры

X - заданное значение аргумента  x (тип: вещественный);
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом:
IERR=1 - когда значение аргумента меньше 0; функция вычисляется для абсолютного значения аргумента;
IERR=65 - когда значение аргумента больше 67.35; значение функции полагается равным 3.4E38.

Версии

SF28E - вычисление модифицированной функции Бесселя первого рода нулевого порядка  I0 (x) с расширенной (Extended) точностью.

Вызываемые подпрограммы

UTSF10 - подпрограмма выдачи диагностических сообщений при работе функции SF28R.
UTSF11 - подпрограмма выдачи диагностических сообщений при работе функции SF28E.

Замечания по использованию

 

Для функции SF28E параметр X имеет тип Extended и его областью допустимых значений является полуинтервал  0 ≤ X < 2070. При IERR = 65 значение функции SF28E полагается равным 1.7E308.

Если значение X меньше нуля, то вычисляется  I0 ( |X| ).

Пример использования

Unit tsf28r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF28R_p;

function tsf28r: String;

implementation

function tsf28r: String;
var
IERR :Integer;
X,R :Real;
begin
Result := '';  { результат функции }
X := 1.0;
R := SF28R(X,IERR);
Result := Result + Format(' %20.16f  %20.16f %5d ',
 [X,R,IERR]) + #$0D#$0A;
UtRes('tsf28r',Result);  { вывод результатов в файл tsf28r.res }
exit;
end;

end.


Результаты:

       R  =  1.26606587768
       IERR  =  0