У меня есть вопрос об использовании 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)]);