Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

9373_ЗаболотниковМЕ_ЛР_2

.docx
Скачиваний:
40
Добавлен:
20.06.2023
Размер:
81.07 Кб
Скачать

Министерство науки и высшего образования РФ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра Информационных систем

отчёт

по лабораторной работе №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