МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра БТС
отчет
по лабораторной работе №1
по дисциплине «Теория случайных процессов»
Тема: Моделирование непрерывных и дискретных случайных величин
ВАРИАНТ 3
Студенты гр. 7501 |
|
Исаков А.О. Попадьина А.О. |
Преподаватель |
|
Пустозеров Е.А. |
Санкт-Петербург
2019
-
Цель работы
Получить знание о генераторах случайных величин и их практической реализации.
-
Теоретические положения
Генератор случайных чисел – математическая модель, позволяющая получить необходимую выборку случайных чисел, которые образуют собой случайную величину.
В работе построили модели генерирования ДСВ и НСВ, которые несколько отличаются друг от друга: для генерации НСВ необходимо использовать метод обратных функций, который заключается в том, что необходимо найти функцию F-1, обратную заданной функции распределения F, после чего подставить в полученную функцию F-1 выборку значений Z, сгенерированных по нормальному закону. На выходе мы получим множество значений F-1(Z), которые будут распределены по заданному закону F.
Для задание ДСВ удобно интервал [0,1] разделить на подынтервалы длинами рi, а затем задать выборку нормированных значений Z, тогда эти значения Z будут задавать вероятность выпадения P для каждого Xi значения заданной ДСВ. Необходимо будет соотнести по значению Z к какому интервалу рi будет относиться наш элемент Xi, затем элемент Xi можно «восстановить» по значению его вероятности.
-
Функции, использованные в программе
Данная функция реализует интервальную оценку среднего по формуле:
На выходе получают величины INTD и INTH, которые содержат значения верхней и нижней оценки соответственно. На входе подаются величины: D – дисперсия, M – математическое ожидание, St – коэффициент Стьюдента, N – количество элементов в выборке.
Код функции:
function [INTH, INTD] =interval(D,M,St,N)
disp('Интервальная оценка среднего ДСВ');
disp('Верхнее');
INTH=M+St.*D./sqrt(N);
disp(M+St.*D./sqrt(N));
disp('Нижнее');
INTD=M-St.*D./sqrt(N);
disp(M-St.*D./sqrt(N));
disp('Закончил считать интервальную оценка среднего ДСВ');
end
Функция «dispersia» реализует интервальную оценку среднего по формуле:
На выходе получают величины DISPD и DISPH, которые содержат значения верхней и нижней оценки соответственно. На входе подаются величины: SKO – среднее квадратичное отклонение, KSIH – значения распределения кси-квадрат для выборки и соответствующего уровня значимости для верхней оценки, KSID – – значения распределения кси-квадрат для выборки и соответствующего уровня значимости для нижней оценки, N – количество элементов в выборке.
Код функции:
function [DISPH,DISPD] = dispersia(SKO,KSIH,KSID,N)
disp('Интервальная оценка дисперсии ДСВ');
disp('Верхнее');
DISPH=(SKO.*SKO.*(N-1))./KSIH;
disp((SKO.*SKO.*(N-1))./KSIH);
disp('Нижнее');
DISPD=(SKO.*SKO.*(N-1))./KSID;
disp((SKO.*SKO.*(N-1))./KSID);
disp('Закончил считать интервальную оценку дисперсии ДСВ');
end
Функция «SV» используется в коде при генерации ДСВ. Функция позволяет обработать массив r, распределенный по нормальному закону и соотнести этому массиву массив представляющий ДСВ.
Код функции:
function r = SV(r,i1)
P=[0;0.5;0.75;0.875;0.9375;0.9688;0.9844;0.9922;0.9961;0.9981;1];
k=[0;1;2;3;4;5;6;7;8;9];
for j=1:10
for i=1:i1
if (r(1,i)>P(j,1)) && (r(1,i)<P(j+1,1))
r(1,i)=k(j,1);
end
end
end
end
-
Реализация генератора случайных чисел для НСВ.
clc;
clear all;
close all;
syms x;
syms z;
f=0.5*exp(x/2); % от -беск до 0
f1=0; % от 0 до беск
%ПОЛУЧЕНИЕ ФУНКЦИИ РАСПРЕДЕЛЕНИЯ
F0=int(0.5*exp(x/2),[-inf 0]); % проверка , F0=1
F=int(0.5*exp(x/2),[-inf x]); % функция распределения на интервале от -inf до 0
F1=exp(0/2); % функция распределения на интервале от 0 до inf
%ГРАФИК ФУНКЦИИ РАСПРЕДЕЛЕНИЯ ВЕРОЯТНОСТИ И ФУНКЦИИ ПЛОТНОСТИ ВЕРОЯТНОСТИ
figure('Name','Функция распределения и плотность','NumberTitle','off');
%subplot(2,1,1);
fplot(x,0.5*exp(x/2),[-10 0],'b','Linewidth',2);
hold on;
grid on;
fplot(0,[0 10],'b','Linewidth',2);
hold on
%subplot(2,1,2);
fplot(F,[-10 0],'r','Linewidth',2);
hold on;
grid on;
fplot(F1,[0 10],'r','Linewidth',2);
%ОБРАТНАЯ ФУНКЦИЯ К ФУНКЦИИ РАСПРЕДЕЛЕНИЯ
X=solve(exp(x/2)==z,x);
clear f1 F0 F1
%СОЗДАНИЕ ВЫБОРКИ
z1=rand(50,1);
z2=rand(200,1);
z3=rand(1000,1);
N=2.*log(z1);
N1=2.*log(z2);
N2=2.*log(z3);
LN(1,1)=length(N);
LN(2,1)=length(N1);
LN(3,1)=length(N2);
%Уровни значимости
a(1,1)=0.1;
a(2,1)=0.05;
a(3,1)=0.01;
%Рассчёт кси-квадрат распределения для верхней и нижней интервальной оценки
KSID=zeros(3,3);
KSIH=zeros(3,3);
for j =[1 2 3]
for i =[1 2 3]
KSID(i,j)=chi2inv((1-(a(j,1)/2)),(LN(i,1)-1)); %p=1-a; for a/2 = p=1-a/2 for 1-a/2 p=1-(1-a/2)=a/2;
KSIH(i,j)=chi2inv((a(j,1)/2),(LN(i,1)-1));
end
end
clear z1 z2 z3
%ТОЧЕЧНАЯ ОЦЕНКА СРЕДНЕГО
SR(1,1)=sum(N)/length(N);
SR(2,1)=sum(N1)/length(N1);
SR(3,1)=sum(N2)/length(N2);
%ТОЧЕЧНАЯ ОЦЕНКА ДИСПЕРСИИ
DISP(1,1)=var(N);
DISP(2,1)=var(N1);
DISP(3,1)=var(N2);
%ТОЧЕЧНАЯ ОЦЕНКА СКО
SKO(1,1)=std(N);
SKO(2,1)=std(N1);
SKO(3,1)=std(N2);
%ТОЧЕЧНАЯ ОЦЕНКА МАТОЖИДАНИЯ
MAT(1,1)=mean(N);
MAT(2,1)=mean(N1);
MAT(3,1)=mean(N2);
%Коэффициенты Стьюдента
%альфа 0,1
Student(1,1)=1.671;
Student(2,1)=1.660;
Student(3,1)=1.646;
%альфа 0,05
Student(1,2)=2.010;
Student(2,2)=1.984;
Student(3,2)=1.962;
%альфа 0,01
Student(1,3)=2.726;
Student(2,3)=2.626;
Student(3,3)=2.581;
%Интервальная оцека среднего (обращаемся к функции "interval")
INTH=zeros(3,3);
INTD=zeros(3,3);
for j=[1 2 3]
for i=[1 2 3]
[INTH(i,j), INTD(i,j)]=interval(DISP(i,1),MAT(i,1),Student(i,j),LN(i,1));
end
end
%Интервальная оцека дисперсии (обращаемся к функции "dispersia")
DISPH=zeros(3,3);
DISPD=zeros(3,3);
for j=[1 2 3]
for i=[1 2 3]
[DISPH(i,j), DISPD(i,j)]=dispersia(SKO(i,1),KSIH(i,j),KSID(i,j),LN(i,1));
end
end
%СВЕДЕНИЕ ЗНАЧЕНИЙ В ТАБЛИЦУ
T_p90=table(LN,INTD(:,1),INTH(:,1),DISPD(:,1),DISPH(:,1));
T_p95=table(LN,INTD(:,2),INTH(:,2),DISPD(:,2),DISPH(:,2));
T_p99=table(LN,INTD(:,3),INTH(:,3),DISPD(:,3),DISPH(:,3));
clear i j stD stH student KSIH KSID DISPH DISPD INTH INTD DISP student MAT SKO a
%ПОСТРОЕНИЕ ГИСТОГРАММ
figure('Name','Гистограмма для НСВ','NumberTitle','off');
%формула Стерджесса
k(1,1)=ceil(1+3.322*log10(LN(1,1)));
k(2,1)=ceil(1+3.322*log10(LN(2,1)));
k(3,1)=ceil(1+3.322*log10(LN(3,1)));
subplot(1,3,1)
histogram(N,k(1,1),'Normalization','probability');
hold on;
fplot(x,0.5*exp(x/2),[-12 0]);
subplot(1,3,2)
histogram(N1,k(2,1),'Normalization','probability');
hold on;
fplot(x,0.5*exp(x/2),[-12 0]);
subplot(1,3,3)
histogram(N2,k(3,1),'Normalization','probability');
hold on;
fplot(x,0.5*exp(x/2),[-12 0]);
clear z x
-
Графики и таблицы программы
Рисунок 1. График распределения вероятности (красным), график плотности распределения вероятности (синим)
Рисунок 2. Гистограммы, описывающие закон распределения НСВ с графиком теоретической плотности вероятности
Таблицы интервальных оценок среднего и дисперсии для выборок:
Для
Размер выборки |
Нижняя граница оценки среднего |
Верхняя граница оценки среднего |
Нижняя граница интервальной оценки дисперсии |
Нижняя граница интервальной оценки дисперсии |
50 |
1.0979 |
1.5021 |
1.5451 |
3.0209 |
200 |
0.7813 |
0.9287 |
1.3344 |
1.8570 |
1000 |
0.9139 |
0.9941 |
1.7491 |
2.0266 |
Для
Размер выборки |
Нижняя граница оценки среднего |
Верхняя граница оценки среднего |
Нижняя граница интервальной оценки дисперсии |
Нижняя граница интервальной оценки дисперсии |
50 |
0.7938 |
1.8062 |
1.4596 |
3.2483 |
200 |
0.6705 |
1.0395 |
1.2952 |
1.9205 |
1000 |
0.8562 |
1.0518 |
1.7252 |
2.0562 |
Для
Размер выборки |
Нижняя граница оценки среднего |
Верхняя граница оценки среднего |
Нижняя граница интервальной оценки дисперсии |
Нижняя граница интервальной оценки дисперсии |
50 |
0.4726 |
2.1274 |
1.3102 |
3.7616 |
200 |
0.5612 |
1.1488 |
1.2230 |
2.0532 |
1000 |
0.8006 |
1.1074 |
1.6798 |
2.1156 |
-
Реализация генератора случайных чисел для ДСВ.
clc;
clear all;
close all;
k=0:1:29;
p=2.^(-k-1);
p1=zeros(1,30);
for a=1:1:30
p1(1,a)=2^(-k(1,a)-1);
if (sum(p1)>0.999) && (sum(p1)<0.9995)
disp('Выберем лишь несколько элементов');
disp(a-1);
end
end
clear p1 a k p
a(1,1)=0.1;
a(2,1)=0.05;
a(3,1)=0.01;
N=[50; 200; 1000;];
KSID=zeros(3,3);
KSIH=zeros(3,3);
for j =[1 2 3]
for i =[1 2 3]
KSID(i,j)=chi2inv((1-(a(j,1)/2)),(N(i,1)-1)); %p=1-a; for a/2 = p=1-a/2 for 1-a/2 p=1-(1-a/2)=a/2;
KSIH(i,j)=chi2inv((a(j,1)/2),(N(i,1)-1));
end
end
r=rand(1,50);
i1=50;
r50=SV(r,i1); %Наша ДСВ
r=rand(1,200);
i1=200;
r200=SV(r,i1); %Наша ДСВ
r=rand(1,1000);
i1=1000;
r1000=SV(r,i1); %Наша ДСВ
clear r i1
M(1,1)=mean(r50);
M(2,1)=mean(r200);
M(3,1)=mean(r1000);
S(1,1)=std(r50);
S(2,1)=std(r200);
S(3,1)=std(r1000);
D(1,1)=var(r50);
D(2,1)=var(r200);
D(3,1)=var(r1000);
%Коэффициенты для альфа 0.5
St(1,1)=0.683;
St(2,1)=0.667;
St(3,1)=0.675;
%Коэффициенты для альфа 0.1
St(1,2)=1.711;
St(2,2)=1.671;
St(3,2)=1.646;
%Коэффициенты для альфа 0.01
St(1,3)=2.797;
St(2,3)=2.660;
St(3,3)=2.581;
INTH=zeros(3,3);
INTD=zeros(3,3);
%Интервальная оцека среднего
for j=[1 2 3]
for i=[1 2 3]
[INTH(i,j), INTD(i,j)]=interval(D(i,1),M(i,1),St(i,j),N(i,1));
end
end
%Интервальная оцека дисперсии
DISPH=zeros(3,3);
DISPD=zeros(3,3);
for j=[1 2 3]
for i=[1 2 3]
[DISPH(i,j), DISPD(i,j)]=dispersia(S(i,1),KSIH(i,j),KSID(i,j),N(i,1));
end
end
%СВЕДЕНИЕ ЗНАЧЕНИЙ В ТАБЛИЦУ
T_p90=table(N,INTD(:,1),INTH(:,1),DISPD(:,1),DISPH(:,1));
T_p95=table(N,INTD(:,2),INTH(:,2),DISPD(:,2),DISPH(:,2));
T_p99=table(N,INTD(:,3),INTH(:,3),DISPD(:,3),DISPH(:,3));
%Гистограммы
figure('Name','Гистограммы','NumberTitle','off');
subplot(2,2,1);
h=0:8;
p2=2.^(-h-1);
bar(h,p2);
title('Теоретические данные');
subplot(2,2,2);
histogram(r50,'Normalization','Probability');
title('Пр. результаты для 50 элементов');
set (gca, 'Ylim', [0 0.6]);
subplot(2,2,3);
histogram(r200,'Normalization','Probability');
title('Пр. результаты для 200 элементов');
set (gca, 'Ylim', [0 0.6]);
subplot(2,2,4);
histogram(r1000,'Normalization','Probability');
title('Пр. результаты для 1000 элементов');
set (gca, 'Ylim', [0 0.6]);
clear h p2
-
Графики и таблицы программы
Таблицы интервальных оценок среднего и дисперсии для выборок:
Для
Размер выборки |
Нижняя граница оценки среднего |
Верхняя граница оценки среднего |
Нижняя граница интервальной оценки дисперсии |
Нижняя граница интервальной оценки дисперсии |
50 |
1.0979 |
1.5021 |
1.5451 |
3.0209 |
200 |
0.7813 |
0.9287 |
1.3344 |
1.8570 |
1000 |
0.9139 |
0.9941 |
1.7491 |
2.0266 |
Для
Размер выборки |
Нижняя граница оценки среднего |
Верхняя граница оценки среднего |
Нижняя граница интервальной оценки дисперсии |
Нижняя граница интервальной оценки дисперсии |
50 |
0.7938 |
1.8062 |
1.4596 |
3.2483 |
200 |
0.6705 |
1.0395 |
1.2952 |
1.9205 |
1000 |
0.8562 |
1.0518 |
1.7252 |
2.0562 |
Для
Размер выборки |
Нижняя граница оценки среднего |
Верхняя граница оценки среднего |
Нижняя граница интервальной оценки дисперсии |
Нижняя граница интервальной оценки дисперсии |
50 |
0.4726 |
2.1274 |
1.3102 |
3.7616 |
200 |
0.5612 |
1.1488 |
1.2230 |
2.0532 |
1000 |
0.8006 |
1.1074 |
1.6798 |
2.1156 |
Рисунок 3. Гистограммы, описывающие закон распределения ДСВ: теоретический закон распределения и практические распределения, которые получились при генерации ДСВ
-
Выводы
В программе мы реализовали математический аппарат генерации случайных величин. Для непрерывной случайной величины (НСВ) и дискретной случайной величины (ДСВ) подход к генерации несколько отличался, но суть состояла в том, что СВ, распределенные по заданному закону получали косвенно. Для НСВ воспользовались методом обратных функций: выразили аргумент функции распределения и подставили в качестве значения функции сгенерированную нормально распределённую величину.
Для генерации ДСВ использовали нормированную, распределенную по нормальному закону выборку значений, которая задавала значение вероятности рi, это значение соотносили с значением вероятности рк, которое принимает заданная ДСВ. По значениям рк задали выборку искомой ДСВ.
Для ряда сгенерированных выборок были рассчитаны точечные оценки дисперсии, матожидания и СКО и интервальные оценки среднего и дисперсии для различных уровней значимости, данные сведены в таблицу и указаны в отчете.
Для величин были построены гистограммы распределения. Интервалы определяли по формуле Стерджесса. На представленных в отчёте графиках видно, что распределение сгенерированной СВ соответствует теоретическим распределениям величин по заданному закону.