Текст подпрограммы и версий sf36r_p.zip , sf36e_p.zip |
Тексты тестовых примеров tsf36r_p.zip , tsf36e_p.zip |
Вычисление бета - функции распределения вероятностей 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