Текст подпрограммы и версий sf84r_p.zip , sf84e_p.zip |
Тексты тестовых примеров tsf84r_p.zip , tsf84e_p.zip |
Вычисление полного эллиптического интеграла cel (kc, p, a, b) второго рода общего вида.
Подпрограмма - функция SF84R вычисляет полный эллиптический интеграл второго рода общего вида:
∞ cel( kc, p, a, b) = ∫ [(a + b t 2) dt] / [ (1 + p t 2) ( (1 + t 2)(1 + kc2 t 2) ) 1/2 ] , 0
где kc, p, a, b - вещественные числа.
Справочник по специальным функциям. Под ред. Абрамовица М. и Стиган И., Изд - во "Наука", 1979.
function SF84R(RKC :Real; var P :Real; var A :Real; var B :Real): Real;
Параметры
RKC, P - A, B | заданные значения аргументов kc, p, a и b соответственно (тип: вещественный). |
Версии
SF84E - | вычисление полного эллиптического интеграла cel (kc, p, a, b) второго рода общего вида в режиме расширенной (Extended) точности; при этом все параметры функции SF84E должны иметь тип Extended, а сама функция тоже должна быть описана как Extended. |
Вызываемые подпрограммы: нет
Замечания по использованию
Если RKC = 0 и B = 0, то значение функции полагается равным 1. Если RKC = 0 и B ≠ 0, то значение функции полагается равным наибольшему представимому на используемой машине числу (это означает, что при данном условии интеграл расходится). |
Unit TSF84R_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, SF84R_p; function TSF84R: String; implementation function TSF84R: String; var RKC,P,A,B,R :Real; begin Result := ''; { результат функции } RКС := 0.5; P := 1.0; A := 1.0; B := 1.0; R := SF84R(RKC,P,A,B); Result := Result + Format(' %16.7f ',[R]) + #$0D#$0A; UtRes('TSF84R',Result); { вывод результатов в файл TSF84R.res } exit; end; end. Результат: R = 2.15652