Текст подпрограммы и версий
sf36r_p.zip , sf36e_p.zip
Тексты тестовых примеров
tsf36r_p.zip , tsf36e_p.zip

Функция:  SF36R (модуль SF36R_p)

Назначение

Вычисление бета - функции распределения вероятностей   Ix (a, b).

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

SF36R вычисляет вероятность того, что случайная величина, подчиненная закону бета распределения с параметрами a и b, меньше или pавна значению  x.

Другими словами, SF36R вычисляет отношение

      Ix (a, b) = Bx (a, b) / B (a, b) =
                 x                                                                                                             
                ∫ t a - 1 (1 - t) b - 1 dt 
               0                                 
          =  ---------------------------      ,
                 1                                                                            
                ∫ t a - 1 (1 - t) b - 1 dt
               0 

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

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

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

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

Параметры

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

Версии

SF36E - вычисление бета - функции распределения вероятностей  Ix (a, b) с расширенной (Extended) точностью.

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

UTSF12 - подпрограмма выдачи диагностических сообщений при работе функции SF36R.
UTSF13 - подпрограмма выдачи диагностических сообщений при работе функции SF36E.

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

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

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

Unit tsf36r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF36R_p;

function tsf36r: String;

implementation

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

end.


Результаты:

       Y  =  0.7451499080,     IERR  =  0