Текст подпрограммы и версий
sf60r_p.zip , sf61r_p.zip
Тексты тестовых примеров
tsf60r_p.zip , tsf61r_p.zip

Подпрограмма:  SF60R (модуль SF60R_p) (версия SF61R)

Назначение

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

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

SF60R вычисляет вероятности того, что целочисленная случайная величина, распределенная по закону Пуассона с параметром RLАМ, примет значение I

   P {ξ = I} = T(I + 1) = (RLAM) I exp (- RLAM) / I ! ,    I = 0, 1, ..., K

а также вероятность  P = P {ξ ≤ K}  ,  т.е.
                K
        P =  ∑  T(I + 1)
               I=0 

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

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

procedure SF60R(K :Integer; RLAM :Real; var T :Array of Real;
                var P :Real);

Параметры

K - максимальное значение I, для которого вычисляется вероятность P {ξ = I} (тип: целый);
RLAM - заданный параметр распределения вероятностей Пуассона (тип: вещественный);
T - вещественный вектоp длины K + 1, содержащий вычисленные значения вероятностей P {ξ = I} , 0 ≤ I ≤ K;
P - вещественная переменная, содержащая вычисленное значение вероятности P {ξ ≤ K}.

Версии

SF61R - вычисление функции распределения вероятностей Пуассона P {ξ ≤ K} (см. замечания по использованию).

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

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

 

Если  P {ξ = I}  меньше наименьшего представимого на данной ЭВМ вещественного числа , то программа полагает T(I) = 0.

Если RLAM ≤ 0 ,  то  P {ξ ≤ K} = 1. ,  T(1) = 1. ,  I(J) = 0,   2 ≤ J ≤ K.

Подпрограмма SF61R имеет следующий список формальных параметров
procedure SF61R(K :Integer; RLAM :Real; var P :Real);
так как производится вычисление только вероятности P {ξ ≤ K}. Смысл остальных параметров остается прежним.

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

Unit TSF60R_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, SF60R_p;

function TSF60R: String;

implementation

function TSF60R: String;
var
K,_i :Integer;
RLAM,P :Real;
T :Array [0..1] of Real;
begin
Result := '';  { результат функции }
K := 1;
RLАМ := 0.6;
SF60R(K,RLAM,T,P);
Result := Result + #$0D#$0A;
for _i:=0 to 1 do
 begin
  Result := Result + Format('%20.16f ',[T[_i]]);
  if ( ((_i+1) mod 2)=0 )
   then Result := Result + #$0D#$0A;
 end;
Result := Result + #$0D#$0A;
Result := Result + Format(' %10d  %20.16f %20.16f ',
 [K,RLAM,P]) + #$0D#$0A;
UtRes('TSF60R',Result);  { вывод результатов в файл TSF60R.res }
exit;
end;

end.

Результаты:

       T(1)  =  0.54881163609
       T(2)  =  0.32928698166
       P      =  0.87809861775