Текст подпрограммы и версий
sf60r_c.zip  sf61r_c.zip 
Тексты тестовых примеров
tsf60r_c.zip  tsf61r_c.zip 

Подпрограмма:  sf60r_c (версия sf61r_c)

Назначение

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

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

sf60r_c вычисляет вероятности того, что целочисленная случайная величина, распределенная по закону Пуассона с параметром 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.

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

    int sf60r_c (integer *k, real *rlam, real *t, real *p)

Параметры

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

Версии

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

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

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

 

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

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

Подпрограмма sf61r_c имеет следующий список формальных параметров
int sf61r_c (integer *k, real *rlam, real *p),
так как производится вычисление только вероятности P {ξ ≤ k}. Смысл остальных параметров остается прежним.

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

int main(void)
{
    /* Local variables */
    static float rlam;
    extern int sf60r_c(int *, float *, float *, float *);
    static int k;
    static float p, t[2];

    k = 1;
    rlam = .6f;
    sf60r_c(&k, &rlam, t, &p);

    printf("\n %16.7e %16.7e \n",t[0],t[1]);
    printf("\n %5i %16.7e %16.7e \n",k,rlam,p);
    return 0;
} /* main */


Результаты:

       t(1)  =  0.54881163609
       t(2)  =  0.32928698166
       p      =  0.87809861775