Распределение Пуассона
Распределение Пуассона часто встречается в задачах, связанных с потоком событий.
Под потоком событий будем понимать последовательность событий, наступающих одно за другим в случайные моменты времени.
Примерами могут быть: поток вызовов на телефонной станции, поток заявок в системе массового обслуживания, последовательность распада частиц некоторого количества радия и др.
Простейший поток событий характеризуется следующими свойствами:
а) вероятность наступления того или иного числа событий за любой промежуток времени зависит только от длительности этого промежутка (а не от начала отсчета);
б) указанная вероятность не зависит от того, какое число событий наступило до начала рассматриваемого промежутка времени (отсутствие последствия);
в) за малый промежуток времени вероятность наступления одного события приближенно пропорциональна длительности такого промежутка, а вероятностью наступления двух или более событий можно пренебречь.
В качестве случайной величины X мы рассмотрим число событий простейшего потока, наступающих за фиксированный промежуток времени t.
Значениями этой случайной величины могут быть любые целые числа
m = 0, 1, 2, 3, ...
Соответствующие вероятности обозначим через
pm(t) есть вероятность того, что за фиксированный промежуток m времени t наступит ровно m событий простейшего потока.
Пусть
- малая величина, сравним вероятностиВ результате несложных математических рассуждений приходим, что в пределе при
мы получаем для искомой вероятности p0(t) линейное дифференциальное уравнение первого порядкаРешая это уравнение при начальном условии p0(0) = 1, находим искомую вероятность отсутствия событий за промежуток времени t;
Нетрудно получить и общую формулу для расчета вероятностей
приЭта формула и дает закон распределения случайной величины X - числа событий простейшего потока, наступающих за промежуток времени t.
Статистический смысл параметра
в этой формуле можно выяснить, если единицу времени разбить на N равных промежутков тогда получаем приближенное равенствомы можем толковать его правую часть как относительную частоту наступления некоторого события простейшего потока за промежуток времени наблюдения ; это означает, что есть среднее число наступления таких событий за единицу времени.
Обычно произведение t обозначают a и записывают закон распределения в виде
Этот закон распределения и называют законом распределения Пуассона или законом редких явлений.
Замечание. При малых значениях p и больших значениях n распределение Пуассона может быть применено в качестве приближенного значения для биномиального распределения.
Обозначим np = a, тогда p = a/n, q = 1 - p = 1 - a/n. Разложим вероятность в степенной ряд по степеням 1/n; ограничиваясь членами порядка 1/n, получим
Первый член этого разложения дает как раз вероятность в распределении Пуассона, откуда и следует приближенная (асимптотическая) формула
второй член в скобках может служить для оценки относительной погрешности этой приближенной формулы:
Составим процедуру для вычисления вероятности по формуле Пуассона.
Для этого выведем рекуррентную формулу для вычисления вероятности:
отсюда получаем соотношение:
При m = 0, получим
Пользуясь этими двумя формулами легко составить функцию вычисления вероятностей по формуле Пуассона.
{ Функция вычисления вероятности распределения Пуассона }
Function PS(m : integer; a : real) : real;
var
i : integer;
pp : real;
begin
pp := exp(-a);
if m = 0 then pp := exp(-a)
else for i := 1 to m do pp := pp*a/i;
PS := pp
end;
Составим программы решения следующих задач, используя эту процедуру.
Пример 1. Вероятность изделию быть бракованным равна 0.05. Найти вероятность того, что среди 1000 изделий 40 бракованных.
{ Распределение Пуассона }
Program Problem1;
uses WinCrt;
var
n, m : longint;
p, a : real;
{----------------------------------------------------------------------------------------}
{ Функция вычисления вероятности распределения Пуассона }
Function PS(m : integer; a : real) : real;
var
i : integer;
pp : real;
begin
pp := exp(-a);
if m = 0 then pp := exp(-a)
else for i := 1 to m do pp := pp*a/i;
PS := pp
end;
{----------------------------------------------------------------------------------------}
{ Основная программа }
begin
write('Введите общее число изделий '); readln(n);
write('Введите вероятность изделия быть бракованным '); readln(p);
writeln('Введите число бракованных изделий, вероятность ');
write('появления которых Вы находите '); readln(m);
a := n*p;
writeln('Вероятность ', m, ' бракованных изделий в ');
writeln('партии из ',n, ' изделий равна ', PS(m, a):1:6)
end.
Пример 2. Вероятность сбить самолет одним выстрелом из винтовки в определенных условиях равна 0.003. Определить вероятность поражения самолета, если сделано по одному выстрелу из 300 винтовок.
{ Распределение Пуассона }
Program Problem2;
uses WinCrt;
var
n : longint;
p, a : real;
{----------------------------------------------------------------------------------------}
{ Функция вычисления вероятности распределения Пуассона }
Function PS(m : integer; a : real) : real;
var
i : integer;
pp : real;
begin
pp := exp(-a);
if m = 0 then pp := exp(-a)
else for i := 1 to m do pp := pp*a/i;
PS := pp
end;
{---------------------------------------------------------------------------------------}
begin
write('Введите общее число выстрелов '); readln(n);
write('Введите вероятность попадания при одном выстр. ');
readln(p);
a := n*p;
write('Вероятность поражения самолета при ');
writeln(n, ' выстрелах равна ', (1 - PS(0, a)):1:6)
end.
Пример 3.
Прибор состоит из 200 деталей, каждая из которых за время t может выйти из строя с вероятностью p = 0.01.
Найти вероятность того, что за время t выйдут из строя: а) 3 детали; б) не более трех деталей; в) не менее двух деталей; г) от двух до четырех деталей включительно.
{ Распределение Пуассона }
Program Problem3;
uses WinCrt;
var
n, m, i : longint;
p, a, Sum : real;
{----------------------------------------------------------------------------------------}
{ Функция вычисления вероятности распределения Пуассона }
Function PS(m : integer; a : real) : real;
var
i : integer;
pp : real;
begin
pp := exp(-a);
if m = 0 then pp := exp(-a)
else for i := 1 to m do pp := pp*a/i;
PS := pp
end;
{----------------------------------------------------------------------------------------}
begin
write('Введите общее число деталей '); readln(n);
write('Введите вероятность выхода изделия из строя '); readln(p);
writeln('Введите число изделий, вероятность выхода из');
write('строя которых Вы находите '); readln(m); writeln;
a := n*p;
Sum := 0;
for i := 0 to 3 do Sum := Sum + PS(i, a);
writeln('Вероятность того, что за указанное время ');
write('выйдет из строя ',m, ' изделия равна ');
writeln(PS(m, a):1:6);
writeln('не более ',m, ' изделий ', Sum:1:6);
Sum := 0;
for i := 0 to 1 do Sum := Sum + PS(i, a);
Sum := 1 - Sum;
writeln('выйдет из строя не менее 2 деталей ', Sum:1:6);
Sum := 0;
for i := 2 to 4 do Sum := Sum + PS(i, a);
writeln('выйдет из строя от 2 до 4 деталей ', Sum:1:6)
end.
Пример 4. При контролируемом производственном процессе доля брака равна 0.02. При обнаружении в партии из 150 изделий более 5 бракованных изделий вся партия задерживается. Определить вероятность того, что партия будет принята.
{ Распределение Пуассона }
Program Problem4;
uses WinCrt;
var
n, m, i : longint;
p, a, PP : real;
{----------------------------------------------------------------------------------------}
{ Процедура вычисления вероятности распределения Пуассона }
Function PS(m : integer; a : real) : real;
var
i : integer;
pp : real;
begin
pp := exp(-a);
if m = 0 then pp := exp(-a)
else for i := 1 to m do pp := pp*a/i;
PS := pp
end;
{----------------------------------------------------------------------------------------}
{ Основная программа }
begin
write('Введите общее число изделий '); readln(n);
write('Введите вероятность изделия быть бракованным ');
readln(p);
writeln('Введите число бракованных изделий, вероятность ');
write('появления которых Вы находите '); readln(m);
a := n*p;
PP := 0;
for i := 0 to m do PP := PP + PS(i, a);
writeln('Вероятность ', m, ' бракованных изделий в ');
writeln('партии из ',n, ' изделий равна ', PP:1:6)
end.