Текст подпрограммы и версий
sf22r_p.zip , sf22e_p.zip
Тексты тестовых примеров
tsf22r_p.zip , tsf22e_p.zip

Функция:  SF22R (модуль SF22R_p)

Назначение

Вычисление значений бета-функции.

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

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

                       1
     B (x, y)  =  ∫ t x - 1(1 - t)y - 1 dt
                      0 

Бета-функция может быть представлена с помощью гама-функции

     B (x, y)  =  Г(x)Г(y) / Г(x + y). 

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

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

function SF22R(X :Real; Y :Real; var IERR :Integer): Real;

Параметры

X, Y - заданные значения аргументов  x и  y  соответственно (тип: вещественный);
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы функции; при этом:
IERR=65 - когда значение одного из аргументов (X, Y, X + Y) pавно нулю или целому отрицательному числу; значение функции полагается равным 3.4E38;
IERR=66 - когда значение одного из аргументов (X, Y или X + Y) меньше чем - 20.4; значение функции полагается равным 3.4E38.

Версии

SF22E - вычисление значений бета - функции с расширенной (Extended) точностью.

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

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

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

  Областью допустимых значений аргументов для значений аргументов SF22R является луч z ≥ - 20.4,  z ≠ 0, - 1, - 2, ..., - 20, а для функции   SF22E - z ≥ - 961.199,     z ≠ 0, - 1, - 2, ..., - 961. Kpоме того, для функции SF22E аргументы X и Y имеют тип Extended и при нарушении области допустимых значений функция полагается равной 1.7E308.

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

Unit tsf22r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF22R_p;

function tsf22r: String;

implementation

function tsf22r: String;
var
IERR :Integer;
X,Y,Y1 :Real;
begin
Result := '';  { результат функции }
X := 1.5;
Y := 2.9;
Y1 := SF22R(X,Y,IERR);
Result := Result + Format(' %20.16f  %5d ',[Y1,IERR]) + #$0D#$0A;
UtRes('tsf22r',Result);  { вывод результатов в файл tsf22r.res }
exit;
end;

end.


Результаты:    Y1  =  0.159770619769 ,     IERR  =  0