【发布时间】:2014-12-07 13:14:22
【问题描述】:
我有一个关于使用 MATLAB 求概率密度函数的问题。问题是关于重力g = 9.8 m/s和速度v = sqrt(980) m/s的炮弹射程。角度,theta,是一个在 0 和 pi/2 之间均匀分布的随机变量。我必须使用随机变量的函数和弹丸的平均距离来绘制 theta 的均匀分布和范围 fr(r) 的概率密度函数。
到目前为止,我已经使用物理学中的方程 r = V^2*sin(2*theta)/g 来计算均值和 sigma。 sigmatheta = (pi/2)/sqrt(12) 和 meantheta = pi/2/2 简化方程,r = 100*sin(2*theta)。我知道均匀分布,ftheta(theta) 从 0 到 pi/2 并等于 2/pi, .6366。以下代码作为均匀和概率密度函数绘图的示例。我已经替换了我认为与这个特定问题有关的数字。使用公式 g(meantheta) + sigmatheta^2/2 *(g''(meantheta)),r 的平均值应该是 58.87,但绘图显示为 63.65,所以我已经看到代码中可能存在一些错误或者我对问题的理解。 fr(r) 是弹丸射程的概率密度图。
均匀分布图正确,但概率密度函数似乎有误。我想知道是否可以得到一些帮助来修复它。
附言抱歉,背景信息太长 谢谢!
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)]);
【问题讨论】:
标签: matlab statistics probability-density