Текст подпрограммы и версий
sf37r_p.zip , sf37e_p.zip
Тексты тестовых примеров
tsf37r_p.zip , tsf37e_p.zip

Функция:  SF37R (модуль SF37R_p)

Назначение

Вычисление неполной бета - функции  Bx (a, b) вещественных аргументов.

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

SF37R вычисляет неполную бета - функцию вещественных аргументов a и b (a > 0, b > 0)

                        x
     Bx (a, b) = ∫ t a - 1 (1 - t) b - 1 dt      (0 ≤ x ≤ 1)
                     0 

M.Abramowitz, I.A.Stegun, Handbook of Mathematical Functions, New York, Dover Publications, INC., 1965.

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

function SF37R(X :Real; A :Real; B :Real; var IERR :Integer): Real;

Параметры

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

Версии

SF37E - вычисление неполной бета - функции  Bx (A, B) вещественных аргументов с расширенной (Extended) точностью.

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

SF22R - подпрограмма вычисления значений бета - функции.
SF36R - подпрограмма вычисления бета - функции распределения вероятностей  Ix (A, B).
SF22E - подпрограмма вычисления значений бета - функции с расширенной (Extended) точностью.
SF36E - подпрограмма вычисления бета - функции распределения вероятностей  Ix (A, B) с расширенной (Extended) точностью.
UTSF12 - подпрограмма выдачи диагностических сообщений при работе функциии SF37R.
UTSF13 - подпрограмма выдачи диагностических сообщений при работе функции SF37E.

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

  Для функции SF37E параметры X, A и B должны иметь тип Extended и при IERR ≠ 0 значение SF37E полагается равным 1.7E308.

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

Unit tsf37r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF37R_p;

function tsf37r: String;

implementation

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

end.


Результаты:

       Y  =  0.0833333333, 
       IERR  =  0