Текст подпрограммы и версий
sf38r_p.zip
Тексты тестовых примеров
tsf38r_p.zip

Функция:  SF38R (модуль SF38R_p)

Назначение

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

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

SF38R вычисляет значение  x такое, что

     Ix (A, B) = P ,

где  P      - заданное значение вероятностей (0 < P < 1) ,
       A, B - заданные параметры бета - функции  распределения
                 вероятностей (A > 0, B > 0) . 

Используется метод бисекции.

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

function SF38R(P :Real; A :Real; B :Real; var IERR :Integer): Real;

Параметры

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

Версии: нет

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

SF36R - вычисление бета - функции распределения вероятностей  Ix (A, B).
UTSF12 - подпрограмма выдачи диагностических сообщений при работе функции SF38R.

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

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

Unit tsf38r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF38R_p;

function tsf38r: String;

implementation

function tsf38r: String;
var
IERR :Integer;
P,A,B,Y :Real;
begin
Result := '';  { результат функции }
P := 0.7451499080;
A := 5.5;
B := 0.5;
Y  := SF38R(P,A,B,IERR);
Result := Result + Format('%s',[' P=']);
Result := Result + Format('%20.16f ',[P]);
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',['   IERR=']);
Result := Result + Format('%3d ',[IERR]);
Result := Result + Format('%s',['   SF38R=']);
Result := Result + Format('%20.16f ',[Y]) + #$0D#$0A;
UtRes('tsf38r',Result);  { вывод результатов в файл tsf38r.res }
exit;
end;

end.


Результаты:

       Y  =  0.9900000002
       IERR  =  0