- •Лекция 3 Случайные величины
- •Случайные величины как факторы случайности событий
- •Определение случайной величины
- •Дискретные случайные величины
- •Свойства дискретных распределений
- •Индикатор случайного события
- •Закон распределения дискретных св
- •Биномиальное распределение
- •Распределение Пуассона
- •Геометрическое распределение
- •Гипергеометрическое распределение
- •Непрерывные случайные величины
- •Вероятностный смысл функции распределения непрерывной св
- •Свойства функции распределения
- •Плотность распределения
- •Основное свойство плотности распределения
- •Дискретно-непрерывные св
- •Пример построения закона распределения
- •Практическое использование законов распределения
- •Интегральная формула полной вероятности
- •Какая нужна технология обработки законов распределения
- •Получение случайных реализаций св согласно ее закону распределения
- •Универсальный генератор случайных реализаций св
- •Статистические распределения
- •Эмпирическая функция распределения
- •Эмпирический закон распределения дискретной св
- •Гистограмма частот
- •Построение гистограммы
- •Построитель гистограмм
- •Оптимизация гистограмм
- •Статистическая функция распределения
- •Построение закона распределения дискретной св
- •Моделирование дискретно-непрерывных случайных величин
- •Пример дискретно-непрерывной св
- •Полиморфизм объектных методов
- •БэсПиБп.3. Случайные величины 15
Полиморфизм объектных методов
Объектная технология замечательна своей полиморфностью, благодаря чему можно повторить вычисления, заменив прямоугольники кругами:
>>A=Circ(10);B= Circ(3);D=Circ(15);X=Gen('rnd',D,50);
Выполнив остальные команды с новыми объектами A, B, D, построим функцию распределения площадей пересечений. Полиморфное взаимодействие (в данном случае, определение площади пересечений) объектов разных геометрических классов (рис. 3.17) осуществляется корректно каждой парой объектов в соответствии с их свойствами.
Геометрические объекты способны учитывать взаимное пересечение при вычислении площади поражения цели несколькими снарядами. Моделирование с помощью генератора Gen рассеивания залповой стрельбы, корректное вычисление ущерба геометрическими объектами в каждой случайной реализациии, построение функции ущерба по накопленной статистике с помощью SmartHist и вычисление показателей эффективности по известной функции распределения – это технология, на основе которой возможен системный анализ эффективности стрельбы.
Контрольные вопросы
-
Объясните связь между случайными событиями и случайными величинами.
-
Как описывают распределение дискретной СВ?
-
Как отличаются друг от друга многоугольники распределения двух СВ «расход снарядов» и «число промахов» в серии независимых выстрелов до первого попадания?
-
Перечислите свойства функции распределения непрерывной СВ.
-
Объясните вероятностный смысл плотности вероятности непрерывной СВ, элемента вероятности. Основное свойство плотности вероятности.
-
Объясните структуру подынтегрального выражения в интегральной формуле полной вероятности.
-
Каковы особенности функции распределения дискретно-непрерывной СВ? Как записать интегральную формулу полной вероятности для дискретно-непрерывной СВ?
-
Как построить гистограмму статистического распределения? какими соображениями следует руководствоваться при выборе ширины регистров?
-
Как построить статистический ряд распределения и полигон частот?
ПРИЛОЖЕНИЕ к лекции 3
Листинг 3.1. Функция Gen для вычисления функции распределения стандартного нормального закона:
%Генерирует случайные реализации СВ с заданным законом распределения
function out=Gen(varargin)
switch varargin{1}
case 'const', out=ones(varargin{3:4})*varargin{2};
case 'exp', out=-log(rand(varargin{3:4}))/varargin{2};
case 'Wei', out=-log(rand(varargin{3:4}));
c=varargin{2}; if c(2)~=1 out=out.^1/c(2);end
out=out/c(1);
case 'rnd', a=varargin{2};
if isreal(a)
v=Default({{0},0,pi/2,10000,1},varargin);
out = a+(v{3}-a)*rand(v{4:5});
elseif isa(a,'Rect')
c=MyCenter(a); r=MySize(a); n=varargin{3};
out=Madd(Mmult(rand(2,n)-0.5,r'),c);
elseif isa(a,'Circ')
c=MyCenter(a); r=MySize(a); n=varargin{3};
out=Madd(Mmult(rand(2,fix(4/3*n))-0.5,2*r'),c);
I=find((out(1,:)-c(1)).^2+(out(2,:)-c(2)).^2<r^2);
if length(I)>n I=I(1:n);end
out=out(:,I);
elseif isa(a,'smartshape')
out=[];
n=varargin{3};AB=getab(a);
m=min(AB,[],2);M=max(AB,[],2);
k=fix(4/3*n);
o=Madd(Mmult(rand(2,k),M-m),m);
for i=1:k
if Impact(a,o(:,i)) out(:,end+1)=o(:,i);end
end
end
case 'bin', n=1;if nargin>3 n=varargin{4};end
k=varargin{2}; p=varargin{3};
if p>1 pp=k;k=p;p=pp; end
R=rand(n,k);out=sum(R<p,2)';
case 'sin', v=Default({{0},0,pi/2,10000,1},varargin);
a=sin(v{2});
out=asin(rand(v{4},v{5})*(sin(v{3})-a)+a);
end
function v=Default(v,act)
v(1:length(act))=act;
Листинг 3.2. Построитель гистограмм:
function varargout = SmartHist(A,X,n,nh)
if nargin<2 | isempty(X) X=[min(A) max(A)]; end
if nargin<3 & length(X)<3 n=[]; end
t=[];H=[]; eps=1e-15;
A=sort(A(:)');N=length(A);
k=[find(A(2:end)-A(1:end-1)>eps) N];
if length(k)>0
C=diff([0 k]);
I=find(C>1); if ~isempty(I) t=A(k(I));end
A0=A;A=[];
J=find(C==1);if ~isempty(J) A=A0(k(J)); end
end
if ~isempty(A)
if isempty(n) [n, n2]=opt_n(A,X); end
if nargin<4
nh=n;
else
if isempty(nh)nh=opt_n(A,X);end
end
[x,F,f,H]=SDL(A,X,n,nh,nargout);
F.F=F;F.x=x;f.f=f;f.x=x;
else
f.f=C(I)/N; f.x=t; F.x=t; F.F=f.f*0;
end
if ~isempty(t)
dh=1;if isstruct(H) dh=H.h;end
F.F=F.F*length(A)/N;
[F,fs]=CorrectF(F,f,t,I,C/N,C/N/dh);
if ~isempty(A) f=fs;end
if isstruct(H) H.p=hist(A0,H.x)/N; end
end
F.I='F';f.I='f';H.I='H';
varargout{1}=F;
if nargout >1 varargout{2}=f; end
if nargout >2 varargout{3}=H; end
%
function [n, ns] = opt_n(A,X)
Sd=1e10;I=0;
for k=10:2:100
I=I+1;
[x,dh,xx]=Net(X,k);
B=hist(A,xx);
[d,d2]=Diff_k(B);
Ds(I)=sum(abs(d));D2s(I)=sum(abs(d2));
end
[D,IDm]=min(Ds); n=10+(IDm-1)*2;
[D2,ID2m]=min(D2s);ns=10+(ID2m-1)*2;
%
function fs = Correct_f(fs,t,I,C)
for i=1:length(t)
J=find(fs.x==t(i));
fs.f(J)=fs.f(J)+C(I(i));
end
%
function [Fs,fs] = CorrectF(Fs,fs,t,I,CF,Cf)
x=Fs.x;F=Fs.F;f=fs.f;
K=max(fs.f)/max(Cf(I))*1.5;
Cf=Cf*K;
for i=1:length(t)
m=find(x>t(i));
if ~isempty(m)
m1=m(1)-1;
x=[x(1:m1),x(m1),x(m)];
F=[F(1:m1),[F(m1),F(m)]+CF(I(i))];
fs.f=[fs.f(1:m1),Cf(I(i)),fs.f(m)];
else
m=length(x);
x=[x(1:m),x(m)];
F=[F(1:m),F(m)];
fs.f=[fs.f(1:m),fs.f(m)];
F(m+1)=F(m+1)+CF(I(i));
fs.f(m+1)=Cf(I(i));
end
Fs.F=F;Fs.x=x;fs.x=x;
end
%
function [d,d2]=Diff_k(x)
d=[0 diff(x)];
d2=[0 diff(d)];
%
function [x,F,f,H]=SDL(W,X,N,nh,narg)
[x,dh,xx]=Net(X,N);
ff=hist(W,xx)/length(W);
f2=ff/(2*diff(x(1:2)));
F=[0,cumsum(ff)];
f1=[f2(1),f2]+[f2,f2(end)];
f=f1+[f1(2:end) f1(end)]*0.5+[f1(1) f1(1:end-1)]*0.5;
f=f/Trap(f,x);
if narg<3 H=[];break,end
if nh~=N
[h,dh,xx]=Net(X,nh);
ff=hist(W,xx)/length(W);
end
H.x=xx;H.p=ff;H.h=dh;
%
function [x,dh,xc]=Net(X,N)
x=linspace(X(1),X(2),N);
dh=diff(x(1:2));
xc=x(1:end-1)+dh/2;