Учитывая равномерное распределение переменной, используйте функцию случайных величин, чтобы построить функцию плотности вероятности MATLAB

У меня есть вопрос об использовании MATLAB для нахождения функции плотности вероятности. Вопрос заключается в дальности полета пушечного снаряда с гравитацией g = 9,8 м / с и скоростью v = sqrt (980) м / с. Угол тета - это равномерно распределенная случайная величина от 0 до пи / 2. Мне нужно построить равномерное распределение тета и функцию плотности вероятности дальности fr (r), используя функцию случайной величины и среднего расстояния до снаряда.

До сих пор я использовал уравнение из физики r = V ^ 2 * sin (2 * theta) / g, чтобы вычислить среднее значение и сигму. sigmatheta = (pi / 2) / sqrt (12) и означает heta = pi / 2/2 Упрощая уравнение, r = 100 * sin (2 * theta). Я знаю равномерное распределение, ftheta (тета) идет от 0 до pi / 2 и равняется 2 / pi, 0,6366. Следующий код был приведен в качестве примера для построения равномерной функции и функции плотности вероятности. Я заменил цифры, которые, по моему мнению, имеют отношение к этому конкретному вопросу. Используя формулу g (meanheta) + sigmatheta ^ 2/2 * (g '' (meanheta)), среднее значение r должно быть 58,87, но график показывает 63,65, поэтому я уже вижу, что в коде могут быть некоторые ошибки. или мое понимание проблемы. fr (r) - график плотности вероятности для дальности полета снаряда.

Равномерное распределение отображается правильно, но, похоже, у меня есть ошибка с функцией плотности вероятности. Мне было интересно, могу ли я получить помощь, чтобы это исправить.

p.s. Извините за длинную справочную информацию, спасибо!

samp_num=1000000;
xmin =0;                    %xmin for uniform distribution, a x is theta
xmax=pi/2;                  %xmax for uniform distribution, b
deltx=xmax-xmin;            %difference between xmax,xmin, pi/2, b-a
x=xmin+((deltx)*rand(1,samp_num));%numbers between 0 and pi/2
y=(100*sin(2.*x));          %g(x)=y=100*sin(2*x) y is range
ymax=(100*sin(2.*xmax));    %g(pi/2), g(b)
ymin=(100*sin(2.*xmin));    %g(0), g(a)
delty=ymax-ymin;            %g(b)-g(a)
mean_x=mean(x);             %ux
std_x=std(x);               %sigmax
mean_y=mean(y);             %uy
std_y=std(y);
bin_sizex=deltx/100;
binsx=[xmin:bin_sizex:xmax];
u=hist(x,binsx);
u1=u/samp_num/bin_sizex;
bin_sizey=delty/100;
binsy=[ymin:bin_sizey:ymax];
v=hist(y,binsy);
v1=v/samp_num/bin_sizey;
sum_v1=sum(v1)*bin_sizey;
subplot(2,1,1)
bar(binsx,u1)
legend(['mean=',num2str(mean_x),'std=',num2str(std_x)]);
subplot(2,1,2)
bar(binsy,v1)
legend(['mean=',num2str(mean_y),' std=',num2str(std_y)]);

person azumakazuma    schedule 13.10.2014    source источник


Ответы (1)


Ваш ymax - это 100*sin(pi), который равен 0, то же самое, что и ymin. Значит, ваша вторая гистограмма неправильно разбита. Я исправил это и еще несколько вещей в вашем коде.

Но причина того, что это не работает, - это другой вопрос. Вы вычисляете ожидаемое значение расстояния, применяя свою функцию к ожидаемому углу. Это неверно, потому что функция не является линейной, поэтому 63.65 является (приблизительно) правильным ожидаемым значением (равным 200/pi=65.66...).

samp_num=1000000;
N=100
xmin=0;                     %xmin for uniform distribution, a x is theta
xmax=pi/2;                  %xmax for uniform distribution, b
deltx=xmax-xmin;            %difference between xmax,xmin, pi/2, b-a
x=xmin+(deltx)*rand(1,samp_num);%numbers between 0 and pi/2
y=100*sin(2.*x);            %g(x)=y=100*sin(2*x) y is range
ymax=max(y);                %g(pi/2), g(b)
ymin=min(y);                %g(0), g(a)
delty=ymax-ymin;            %g(b)-g(a)
mean_x=mean(x);             %ux
std_x=std(x);               %sigmax
mean_y=mean(y);             %uy
std_y=std(y);
[u,binsx]=hist(x,N);
u1=u/samp_num/(deltx/(N));
[v,binsy]=hist(y,N);
v1=v/samp_num/(delty/(N));
subplot(2,1,1)
bar(binsx,u1)
legend(['mean=',num2str(mean_x),'std=',num2str(std_x)]);
subplot(2,1,2)
bar(binsy,v1)
legend(['mean=',num2str(mean_y),' std=',num2str(std_y)]);
person David    schedule 13.10.2014
comment
Теперь у меня вопрос о графике равномерного распределения. Обычно, когда у меня равномерное распределение между a и b, fx (x) будет 1 / (b-a), но когда я использую ваш исправленный код, график равномерного распределения не соответствует ожидаемому значению. Любые намеки на то, почему? - person azumakazuma; 13.10.2014
comment
@azumakazuma Вы правы, я думаю, что исправил. - person David; 13.10.2014
comment
Большое спасибо за помощь ! :) - person azumakazuma; 14.10.2014