9373_ЗаболотниковМЕ_ЛР_2
.docxМинистерство науки и высшего образования РФ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра Информационных систем
отчёт
по лабораторной работе №2
по дисциплине «Моделирование систем массового обслуживания»
Тема: Моделирование дискретной случайной величины
Студент гр. 9373 |
|
Заболотников М.Е. |
Преподаватель |
|
Татарникова Т.М. |
Санкт-Петербург
2022
Цель работы.
Выполнить программную реализацию генератора дискретной случайной величины.
Общие теоретические сведения.
Пусть, например, требуется реализовать дискретную случайную величину , ряд распределения которой задан в виде табл. 1:
Таблица 1 – Ряд распределения ДСВ
|
|
|
|
… |
|
|
|
|
|
… |
|
Необходимо от такой таблицы перейти к другой, где вместо значения вероятности, соответствующей дискретной случайной величине, определены правые границы таким образом, что будет задан интервал действия дискретной случайной величины (см. табл. 2):
Таблица 2 – Накопленные частоты
|
|
|
|
… |
|
|
|
|
|
… |
|
Теперь для реализации датчика дискретной случайной величины остается определить, между какими границами, указанными в верхней строке табл. 2, попадает значение базовой случайной величины, и выбрать соответствующее значение случайной величины из нижней строки табл. 2.
Математическое ожидание и дисперсия дискретной случайной величины определяются по формулам:
где – число возможных значений дискретной случайной величины.
Ход работы.
Имеется следующий ряд распределения ДСВ, соответствующий варианту работы:
|
0.114 |
0.090 |
0.270 |
0.192 |
0.086 |
0.242 |
0.006 |
|
-96.6 |
-87.4 |
-55.7 |
-54.5 |
59.7 |
83.5 |
99.3 |
Далее сгенерируем значений ДСВ:
DRVs = randi([0 100], 1, n);
for i = 1 : n
DRVs(i) = DRVs(i) / 100;
if DRVs(i) <= Ps2(1)
DRVs(i) = Xs(1);
else
for j = 2 : N
if DRVs(i) > Ps2(j - 1) && DRVs(i) <= Ps2(j)
DRVs(i) = Xs(j);
break;
end;
end;
end;
end;
Получаем следующий массив значений:
Рисунок 1 – Первые 30 значений, сгенерированных датчиком
После расчётов теоретических и эмпирических значений и получаем следующие значения:
|
|
Рисунок 2 – Теоретические значения и |
Рисунок 3 – Эмпирические значения и |
По результатам расчётов видно, что значения теоретических и эмпирических моментов довольно близки друг к другу, однако всё равно есть заметные различия. Это связано с малым объёмом выборки, так как при большем объёме, например, при различий практически не будет.
И в конце построим гистограмму распределения для теоретических и эмпирических вероятностей дискретной случайной величины. Результаты представим на рис. 4:
Рисунок 4 – Гистограммы распределения теоретических (рыжий) и эмпирических (зелёный) вероятностей дискретной случайной величины
Исходя из рисунка видно, что есть примерное совпадение у теоретического и эмпирического распределений вероятностей. Однако, как уже было отмечено ранее, малый объём выборки поспособствовал таким видимым различиям. Но в целом, соответствие наблюдается.
Выводы.
В ходе работы был реализован датчик дискретной случайной величины. Были рассчитаны первый и второй моменты распределения теоретически и эмпирически. При довольно заметном соответствии друг другу теоретических и эмпирических значений, наблюдается некое расхождение – как у математического ожидания и дисперсии, так и у гистограмм. Выяснили, что это связано с малым объёмом выборки.
Полный код программы.
Ниже приведён полный код программы. Для написания использовался пакет прикладных программ для решения задач технических вычислений MatLab.
N = 7;
n = 500;
Xs = [-96.9 -87.4 -55.7 -54.5 59.7 83.5 99.3];
Ps = [0.114 0.090 0.270 0.192 0.086 0.242 0.006];
% Формируем массив накопленных теоретических частот
Ps2 = zeros(1, N);
Ps2(1) = Ps(1);
for i = 2 : N
Ps2(i) = Ps2(i - 1) + Ps(i);
end;
% Формируем датчик ДСВ путём соотнесения значения БСВ(i)
% с промежутком в массиве накопленных частот, куда это
% значение БСВ(i) попадает
DRVs = randi([0 100], 1, n);
for i = 1 : n
DRVs(i) = DRVs(i) / 100;
if DRVs(i) <= Ps2(1)
DRVs(i) = Xs(1);
else
for j = 2 : N
if DRVs(i) > Ps2(j - 1) && DRVs(i) <= Ps2(j)
DRVs(i) = Xs(j);
break;
end;
end;
end;
end;
% Находим теоретическое значение математического ожидания
MX = 0;
for i = 1 : N
MX = MX + Xs(i) * Ps(i);
end;
% Находим теоретическое значение дисперсии
DX = 0;
for i = 1 : N
DX = DX + Xs(i) ^ 2 * Ps(i);
end;
DX = DX - MX ^ 2;
% Находим эмпирическое значение математического ожидания
MDRV = 0;
for i = 1 : n
MDRV = MDRV + DRVs(i);
end;
MDRV = MDRV / n;
% Находим эмпирическое значение дисперсии
DDRV = 0;
for i = 1 : n
DDRV = DDRV + DRVs(i) ^ 2;
end;
DDRV = DDRV / n - MDRV ^ 2;
% Копируем ряд дискретных значений ДСВ (из условия)
DRVXs = zeros(1, N);
for i = 1 : N
DRVXs(i) = Xs(i);
end;
% Считаем, сколько раз каждое из семи значений исходной ДСВ
% встречается в массиве, сформирванном датчиком ДСВ
DRVPs = zeros(1, N);
for i = 1 : n
for j = 1 : N
if DRVs(i) == DRVXs(j)
DRVPs(j) = DRVPs(j) + 1;
break;
end;
end;
end;
for i = 1 : N
DRVPs(i) = DRVPs(i) / n;
end;
hold on
grid on;
% Строим гистограммы теоретических и эмпирических частот
for i = 1 : N
% Теоретические значения частот
rectangle('Position', [(Xs(i)-4) 0 4 Ps(i)], 'FaceColor', [0.9290 0.6940 0.1250]);
% Практические (эмпирические) значения частот
rectangle('Position', [(DRVXs(i)) 0 4 DRVPs(i)], 'FaceColor', [0.4660 0.6740 0.1880]);
end