Текст подпрограммы и версий sf60r_p.zip , sf61r_p.zip |
Тексты тестовых примеров tsf60r_p.zip , tsf61r_p.zip |
Вычисление функции распределения вероятностей Пуассона.
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