Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/sf_htm_p/sf11r_p.htm
Дата изменения: Mon Nov 23 15:10:50 2015 Дата индексирования: Sun Apr 10 02:19:08 2016 Кодировка: Windows-1251 |
Текст подпрограммы и версий sf11r_p.zip , sf11e_p.zip |
Тексты тестовых примеров tsf11r_p.zip , tsf11e_p.zip |
Вычисление модифицированной функции Ханкеля первого порядка K1 (x).
Модифицированную функцию Ханкеля называют иногда модифицированной функцией Бесселя второго рода или функцией Макдональда.
SF11R вычисляет функцию K1 (x) или ex K1 (x) для вещественных положительных x, используя минимаксные приближения рациональными функциями.
J.F.Hart, E.W.Cheney, C.L.Lawson et al, Computer Approximations, Wiley, New Уork, 1968.
function SF11R(X :Real; L :Integer; var IERR :Integer): Real;
Параметры
X - | заданное значение аргумента x (тип: вещественный); |
L - | задает режим работы функции (тип: целый); при этом: если |
L = 1 - | вычисляется функция K1 (x); |
L = 2 - | вычисляется функция ex K1 (x); |
IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом: |
IERR=65 - | когда условное число L ≠ 1 и ≠ 2; значение функции полагается равным 3.4E38; |
IERR=66 - | когда значение аргумента меньше 2.8E - 20; значение функции полагается равным 3.4E38; |
IERR=67 - | когда значение аргумента больше 44.36; значение функции полагается равным 0. |
Версии
SF11E - | вычисление модифицированной функции Ханкеля первого порядка K1 (x) с расширенной (Extended) точностью. |
Вызываемые подпрограммы
UTSF10 - | подпрограмма выдачи диагностических сообщений при работе функции SF11R. |
UTSF11 - | подпрограмма выдачи диагностических сообщений при работе функции SF11E. |
Замечания по использованию
Областью допустимых значений аргумента x для функции SF11R является отрезок 2.8E - 20 ≤ x ≤ 44.36, а для функции SF11E отрезок 1.7E - 308 ≤ x ≤ 2048. Kpоме того, для функции SF11E аргумент x имеет тип Extended и при нарушении области допустимых значений функция SF11E полагается равной 1.7E308, а не 3.4E38 при IERR = 65 и IERR = 66. |
Unit tsf11r_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, SF11R_p; function tsf11r: String; implementation function tsf11r: String; var L,IERR :Integer; X,R :Real; begin Result := ''; { результат функции } X := 0.5; L := 1; R := SF11R(X,L,IERR); Result := Result + Format(' %20.16f %7d %7d %20.16f ', [X,L,IERR,R]) + #$0D#$0A; UtRes('tsf11r',Result); { вывод результатов в файл tsf11r.res } exit; end; end. Результаты: R = 1.65644112000 IERR = 0