Текст подпрограммы и версий
sf14r_p.zip , sf14e_p.zip
Тексты тестовых примеров
tsf14r_p.zip , tsf14e_p.zip

Функция:  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