Функция: SF14R (модуль SF14R_p)
Назначение
Вычисление полных эллиптических интегралов первого рода.
Математическое описание
Функция SF14R производит вычисление следующих интегралов
π/2
(1) y = ∫ (1 - x sin2 t) -1/2 dt для 0 ≤ x < 1
0
π/2
(2) y = ∫ (1 - x2 sin2 t) -1/2 dt для -1 < x < 1
0
π/2
(3) y = ∫ (1 - (1 - x) sin2 t) -1/2 dt для 0 < x ≤ 1
0
Алгоритм реализованный в функции, изложен в статье
W.J.Cody, Chebyshev Approximations for the Complete Elliptic
Integrals K and E, Math. Comp., 19, 1965.
Использование
function SF14R(X :Real; L :Integer; var IERR :Integer): Real;
Параметры
X -
|
заданное значение аргумента x (тип: вещественный);
|
L -
|
задает режим работы функции (тип: целый); при
этом: если
|
L = 1 -
|
вычисляется интеграл (1);
|
L = 2 -
|
вычисляется интеграл (2);
|
L = 3 -
|
вычисляется интеграл (3);
|
IERR -
|
целая переменная, служащая для сообщения об
ошибках, обнаруженных в ходе работы функции; при этом:
|
IERR=65 -
|
когда значение L меньше 1 или больше 3;
значение функции полагается равным 3.4E38;
|
IERR=66 -
|
когда значение аргумента меньше 0. При L = 1;
значение функции полагается pавным 3.4E38;
|
IERR=67 -
|
когда значение аргумента больше или pавно 1.
При L = 1 и L = 2; значение
функции полагается равным 3.4E38;
|
IERR=68 -
|
когда значение аргумента больше 1. При L = 3;
значение функции полагается pавным 3.4E38;
|
IERR=69 -
|
когда значение аргумента меньше или pавно 0.
При L = 3; значение функции полагается равным 3.4E38.
|
Версии
SF14E -
|
вычисление полных эллиптических интегралов
первого рода с расширенной (Extended) точностью.
|
Вызываемые подпрограммы
UTSF10 -
|
подпрограмма выдачи диагностических сообщений
при работе функции SF14R.
|
UTSF11 -
|
подпрограмма выдачи диагностических сообщений
при работе функции SF14E.
|
Замечания по использованию
|
Область допустимых значений аргумента для функции SF14R
и SF14E указана выше при описании параметра IERR. Для
функции SF14E аргумент x имеет тип расширенной (Extended)
точности и при нарушении области допустимых значений функция
SF14E полагается равной 1.7E308.
|
Пример использования
Unit tsf14r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF14R_p;
function tsf14r: String;
implementation
function tsf14r: String;
var
L,IERR :Integer;
X,Y :Real;
begin
Result := ''; { результат функции }
L := 1;
X := 0.0;
Y := SF14R(X,L,IERR);
Result := Result + Format(' %20.16f %15d %15d %20.16f ',
[X,L,IERR,Y]) + #$0D#$0A;
UtRes('tsf14r',Result); { вывод результатов в файл tsf14r.res }
exit;
end;
end.
Результаты:
Y = 1.57079632679, IERR = 0