Текст подпрограммы и версий
sf39r_p.zip , sf39e_p.zip
Тексты тестовых примеров
tsf39r_p.zip , tsf39e_p.zip

Функция:  SF39R (модуль SF39R_p)

Назначение

Вычисление гамма - функции распределения вероятностей  I (x, p).

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

SF39R вычисляет вероятность того, что случайная величина, подчиненная гамма - распределению с параметром  p, меньше или равна заданному значению  x.

Другими словами, SF39R вычисляет отношение  I(x, p)= Гx(p) / Г(p) =
             x                                                                                     
      =   ∫ e - t t p - 1 dt  /  ∫ e - t t p - 1 dt     ,
           0                        0   
   где    Гx (p) - неполная гамма - функция,  
            Г (p)  - гамма - функция (полная),
            x и p  - принимают вещественные значения, причем x ≥ 0 и p > 0.

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

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

function SF39R(X :Real; A :Real; var IERR :Integer): Real;

Параметры

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

Версии

SF39E - вычисление гамма - функции распределения вероятностей  I (x, p) с расширенной (Extended) точностью.

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

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

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

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

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

Unit tsf39r_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF39R_p;

function tsf39r: String;

implementation

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

end.


Результаты:

       R  =  0.632120558812
       IERR  =  0