Текст подпрограммы и версий sf29r_p.zip , sf29e_p.zip |
Тексты тестовых примеров tsf29r_p.zip , tsf29e_p.zip |
Вычисление модифицированной функции Бесселя первого рода первого порядка I1 (x).
SF29R вычисляет модифицированную функцию Бесселя первого рода первого порядка I1 (x) для вещественных x.
J.F.Hart, E.W.Cheney, C.L.Lawson et al, Computer Approximations, Wiley, New York, 1968.
function SF29R(X :Real; var IERR :Integer): Real;
Параметры
X - | заданное значение аргумента x (тип: вещественный); |
IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом: |
IERR= 1 - | когда значение аргумента меньше 0; функция вычисляется для абсолютного значения аргумента; |
IERR=65 - | когда значение аргумента больше 67.35; значение функции полагается равным 3.4E38. |
Версии
SF29E - | вычисление модифицированной функции Бесселя первого порядка I1 (x) с расширенной (Extended) точностью. |
Вызываемые подпрограммы
UTSF10 - | подпрограмма выдачи диагностических сообщений при работе функции SF29R. |
UTSF11 - | подпрограмма выдачи диагностических сообщений при работе функции SF29E. |
Замечания по использованию
Для функции SF29E параметр X имеет тип Extended и его областью допустимых значений является полуинтервал 0 ≤ X < 2070. При IERR = 65 значение функции SF29E полагается равным 1.7E308. Если значение X меньше нуля, то вычисляется I1 ( | X | ). |
Unit tsf29r_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, SF29R_p; function tsf29r: String; implementation function tsf29r: String; var IERR :Integer; X,R :Real; begin Result := ''; { результат функции } X := 1.0; R := SF29R(X,IERR); Result := Result + Format(' %20.16f %20.16f %5d ', [X,R,IERR]) + #$0D#$0A; UtRes('tsf29r',Result); { вывод результатов в файл tsf29r.res } exit; end; end. Результаты: R = 0.565159103986, IERR = 0