Текст подпрограммы и версий
sf20r_p.zip , sf20e_p.zip
Тексты тестовых примеров
tsf20r_p.zip , tsf20e_p.zip

Функция:  SF20R (модуль SF20R_p)

Назначение

Вычисление неполных эллиптических интегралов второго рода.

Математическое описание

Функция SF20R производит вычисление интегралов вида:

                     T
   E (K, T) = ∫ (1 - K2 sin2 t) 1/2 dt      для  0 ≤ K2 ≤ 1    и    0 ≤ T ≤ π/2
                    0 

J.F.Hart, E.W.Cheney, C.L.Lawson et al, Computer Approximations, Wiley, New York, 1968.

Использование

function SF20R(RK2 :Real; T :Real; var IERR :Integer): Real;

Параметры

RK2, T - заданные значения аргументов K2 и T (тип: вещественный);
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом:
IERR=65 - когда значение RK2 меньше 0. или больше 1.; значение функции полагается равным 3.4E38;
IERR=66 - когда T меньше 0. или больше π / 2; значение функции полагается равным 3.4E38.

Версии

SF20E - вычисление неполных эллиптических интегралов второго рода с расширенной (Extended) точностью.

Вызываемые подпрограммы

UTSF10 - подпрограмма выдачи диагностических сообщений при работе функции SF20R.
UTSF11 - подпрограмма выдачи диагностических сообщений при работе функции SF20E.

Замечания по использованию

  Для функции SF20E параметры RK2, T имеют тип Extended. Значение функции SF20E при IERR ≠ 0 полагается равным 1.7E308.

Пример использования

Unit tsf20r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF20R_p;

function tsf20r: String;

implementation

function tsf20r: String;
var
IERR :Integer;
RK2,T,Y :Real;
begin
Result := '';  { результат функции }
RK2 := 0.75;
T := 3.14159265/3;
Y := SF20R(RK2,T,IERR);
Result := Result + Format(' %20.16f  %5d ',[Y,IERR]) + #$0D#$0A;
UtRes('tsf20r',Result);  { вывод результатов в файл tsf20r.res }
exit;
end;

end.


Результаты:

       Y  =  0.918393294308,    IERR  =  0