|
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.su/lib_na/cat/sf_htm_p/sf38r_p.htm
Дата изменения: Fri Apr 1 15:28:01 2011 Дата индексирования: Mon Oct 1 23:01:14 2012 Кодировка: Windows-1251 |
|
Текст подпрограммы и версий sf38r_p.zip |
Тексты тестовых примеров tsf38r_p.zip |
Вычисление обратной бета - функции распределения вероятностей.
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