Uploaded by Юрий

КМП Ваганов 4

advertisement
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ
БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ОБРАЗОВАНИЯ
«ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
Факультет автоматики и вычислительной техники
Кафедра радиоэлектронных средств
Лабораторная работа №1
Компьютерное проектирование и моделирование
«Методы формирования случайных величин с заданным распределением»
Вариант 4
Выполнил
студент гр. ИКТб -3301-04-24 шифр 111835 _________________ /Ваганов Ю.В./
Проверил
ктн, доцент каф. РЭС
___________________ / Ржаникова Е.Д./
Киров 2022
Цель работы: обучение методам моделирования и оценке точности случайных величин
(СВ) с заданным законом распределения.
п.1
п.2
Смешанный генератор,
а=22695477 , m=232 , μ=1
Релеевская СВ, σ =2
Задание.
1) Разработать программный код алгоритма моделирования случайной величины с
равномерным законом распределения на интервале [0,1).
Вариант задания: Смешанный генератор а=22695477, m=232, μ=1.
2) Реализовать алгоритм моделирования случайной величины с заданным законом
распределения.
Вариант задания: Релеевская СВ, σ =2.
3) Разработать программный код для эмпирической оценки математического ожидания,
дисперсии и плотности распределения (гистограммы) релеевской случайной величины,
σ =2
4) Вычислить точность оценки математического ожидания и дисперсии полученных в
результате моделирования (п.1 и п.2) случайных величин при количестве выборок
N=103, 104 , 105.
Выполнение задания.
1) Моделирования случайной величины с равномерным законом распределения на
интервале [0,1).
Вариант задания: Смешанный генератор а=22695477, m=232, μ=1.
Формула для получения РРСВ при помощи смешанного генератора:
𝑥𝑖+1 = (𝑎0 𝑥𝑖 + 𝜇) 𝑚𝑜𝑑 𝑚
Программный код генератора.
function y = mixed_generator(a, m, u, N)
persistent seed;
if isempty(seed)
seed = 2^15;
end
x = zeros(1,N);
y = zeros(1,N);
x(1) = seed;
for i=2:N
x(i) = mod(a * x(i-1) + u, m) ;
y(i) = x(i) / m;
if ~isfinite(y(i))
then
y(i) = y(i-1);
end
end
seed = x(N);
end
как
Программный
код
оценки
математического
ожидания,
дисперсии
и
плотности
распределения.
clearvars;
a=22695477;
m=2^32;
u=1;
%цикл для выборок
for k=1:3
%количество выборок
N = 10^(2+k);
%генерация РРСВ
x = mixed_generator(a, m, u, N);
%вычисление среднего значения
mo=mean(x);
fprintf('Размер выборки N = %d\n', N);
fprintf('Мат.ожидание: %f\n', mo);
fprintf('Теоретическое значение мат.ожидания: %f\n', 0.5);
d=var(x);
fprintf('Дисперсия: %f\n', d);
fprintf('Теоретическое значение дисперсии: %f\n', 1/12);
fprintf('Оценка точности мат.ожидания: eps = %f \nОценка
дисперсии: eps = %f\n\n\n', (abs(0.5-mo)),(abs(1/12-d)));
%отображение гистограммы
M = 1+log(N)/log(2); %количество столбцов
[bar_y,bar_x] = hist(x,M);
bar_y = bar_y / (N*(bar_x(2)-bar_x(1)));
ax = subplot(3,1,k);
bar(ax,bar_x, bar_y);
title("N=" + N);
end
Результаты моделирования
Размер выборки N = 1000
Мат.ожидание: 0.500211
Теоретическое значение мат.ожидания: 0.500000
Дисперсия: 0.083313
Теоретическое значение дисперсии: 0.083333
Оценка точности мат.ожидания: eps = 0.000211
Оценка точности дисперсии: eps = 0.000020
Размер выборки N = 10000
Мат.ожидание: 0.500297
Теоретическое значение мат.ожидания: 0.500000
Дисперсия: 0.084072
Теоретическое значение дисперсии: 0.083333
Оценка точности мат.ожидания: eps = 0.000297
Оценка точности дисперсии: eps = 0.000739
Размер выборки N = 100000
Мат.ожидание: 0.498583
Теоретическое значение мат.ожидания: 0.500000
Дисперсия: 0.083794
Теоретическое значение дисперсии: 0.083333
Оценка точности мат.ожидания: eps = 0.001417
Оценка точности дисперсии: eps = 0.000461
точности
Гистограмма распределения:
2) Моделирование релеевской случайной величины, σ=2
Плотность распределения релеевской случайной величины записывается выражением
𝑦 − 𝑦2
𝑤(𝑦) = 2 𝑒 2𝜎2
𝜎
ФР рэлеевской СВ запишется как
𝐹(𝑦) = 1 − 𝑒
−
𝑦2
2𝜎2
Алгоритм формирования такой СВ имеет вид
𝑦 = 𝜎√−2ln(𝑥)
Математическое ожидание для релеевского распределения:
𝜋
𝑀=√ 𝜎
2
Дисперсия для релеевского распределения:
𝐷 = (2 − 𝜋/2)𝜎 2
Программный код генератора.
s = 2;
for k=1:3
%количество выборок
N = 10^(2+k);
fprintf('Размер выборки N = %d\n', N);
x = zeros (1, N);
Y = zeros (1, N);
P = zeros (1, N);
x = rand (1, N);
Y = s*sqrt(-2*log(x));
Y=sort(Y);
F = 1 - exp(-Y.^2/(2*s^2));
for i=1: N
P(i)=Y(i)*exp((-Y(i)^2)/(2*s^2)) / s^2;
end
mo=mean(Y);
fprintf ('Мат.ожидание: %f\n', mo);
fprintf ('Теоретическое значение мат.ожидания: %f\n', sqrt(pi/2)*s);
%вычисление дисперсии
d=var(Y);
fprintf('Дисперсия: %f\n', d);
fprintf('Теоретическое значение дисперсии: %f\n', (2-pi/2)*sigma^2);
fprintf ('Оценка точности мат. ожидания: eps = %f \nОценка точности
дисперсии: eps = %f\n\n', (abs(sqrt(pi/2) *s-mo)), (abs((2-pi/2)*s^2-d)));
ax = subplot (3,1, k);
plot (ax, Y, P);
title("N=" + N);
end
Результаты моделирования.
>> lab2
Размер выборки N = 1000
Мат.ожидание: 2.482165
Теоретическое значение мат.ожидания: 2.506628
Дисперсия: 1.667309
Теоретическое значение дисперсии: 1.716815
Оценка точности мат.ожидания: eps = 0.024463
Оценка точности дисперсии: eps = 0.049506
Размер выборки N = 10000
Мат.ожидание: 2.494974
Теоретическое значение мат.ожидания: 2.506628
Дисперсия: 1.747065
Теоретическое значение дисперсии: 1.716815
Оценка точности мат.ожидания: eps = 0.011654
Оценка точности дисперсии: eps = 0.03025
Размер выборки N = 100000
Мат.ожидание: 2.503215
Теоретическое значение мат.ожидания: 2.506628
Дисперсия: 1.704079
Теоретическое значение дисперсии: 1.716815
Оценка точности мат.ожидания: eps = 0.003413
Оценка точности дисперсии: eps = 0.012736
Плотность распределения:
Т
Э
е
К
м
о
о
п
р
л
и О
е
и
р ц
т
ч
и е
и
е
ч н
П
ч
с
е к
а
е
т
с а
р
с
в
к
а
к
о
о т
м
о
е о
е
е
ч
о
т
т
з н
р
з
с
н о
н
ч
а с
а
ё
ч т
ч
т
е и
е
о
н
н
в
и
и
е
е
2 0
. .
М
4 0
а
1
8 2
т
0
2 4
е 3
1 4
м
6 6
а
5 3
т
и
2 2 0
ч
. . .
е
5 4 0
с 1
0 9 1
к 0
6 4 1
о 4
6 9 6
е
2 7 5
8 4 4
о
ж
2 0
и
. .
д
5 0
1
а
0 0
0
н 5
3 3
и
2 4
е
1 1
5 3
1
0
3
1 0
. .
6 0
6 4
7 9
3 5
0 0
9 6
Д
1 1
0
и
. .
.
с
7 7
0
п 1
1 4
3
е 0
4 6 7
0
р
8 0
2
с
1 6
5
и
5 5
я
1 0
. .
7 0
1
0 1
0
4 2
5
0 7
7 3
9 6
Выводы.
В ходе работы были изучены методы формирования случайной величины и оценки её
характеристик. Основные результаты работы:
1) Разработан программный код алгоритма моделирования случайной величины с
равномерным законом распределения;
2) реализован алгоритм моделирования случайной величины с заданным законом
распределения;
3) разработан программный код для эмпирической оценки математического
ожидания, дисперсии и плотности распределения (гистограммы) случайной
величины;
4) вычислена точность оценки математического ожидания и дисперсии полученных в
результате моделирования случайных величин при различном размере выборок.
Download