Файл poissonDF.h
#ifndef __POISSON_H__ // Prevents redefinition
/****************************************************/ /* Распределение Пуассона */ /****************************************************/
double poissonDF(double lambda, double n); /* Вычисляет вероятность того, что случайная величина, * подчиняющаяся распределению Пуассона с средним lambda, * не превосходит n. */
double rev_poissonDF(double n, double q); /* По известной вероятности q того, что случайная величина, * подчиняющаяся распределению Пуассона, не превосходит n, * находит среднее lambda, для которого poissonDF(lambda, n) * вернет q. */
double rightCI_Poisson(double n, double level); /* По известному количеству "успехов" вычисляется * правая граница доверительного интервала с * доверительным уровнем level. */
double leftCI_Poisson(double n, double level); /* По известному количеству "успехов" вычисляется * левая граница доверительного интервала с * доверительным уровнем level. */
#define __POISSON_H__ // To prevent redefinition #endif // Ends "#ifndef __POISSON_H__
Файл poissonDF.cpp
/****************************************************/ /* Распределение Пуассона */ /****************************************************/
#include <assert.h>
#include "gammaDF.h"
ENTRY double poissonDF(double lambda, double n) /* Вычисляет вероятность того, что случайная величина, * подчиняющаяся распределению Пуассона с средним lambda, * не превосходит n. */ { assert(lambda > 0); return (n < 0) ? 0 : 1-GammaDF(n+1).value(lambda); }/*poissonDF*/
ENTRY double rev_poissonDF(double n, double q) /* По известной вероятности q того, что случайная величина, * подчиняющаяся распределению Пуассона, не превосходит n, * находит среднее lambda, для которого poissonDF(lambda, n) * вернет q. */ { assert((q >= 0) && (q <= 1)); return (q == 0) ? 0 : ((q == 1) ? 1 : 1-GammaDF(n+1).inv(q)); }/*rev_poissonDF*/
ENTRY double rightCI_Poisson(double n, double level) { assert((level >= 0.5) && (level < 1)); return rev_poissonDF(n, (1+y)/2); }/*rightCI_Poisson*/
ENTRY double leftCI_Poisson(double n, double level) { assert((level >= 0.5) && (level < 1)); return rev_poissonDF(n, (1-y)/2); }/*leftCI_Poisson*/
1 2
8 8 8
| |