МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Факультет автоматики и вычислительной техники Кафедра радиоэлектронных средств Лабораторная работа №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) вычислена точность оценки математического ожидания и дисперсии полученных в результате моделирования случайных величин при различном размере выборок.