0

MATLABを使用して確率密度関数を求めることについて質問があります。問題は、重力g = 9.8 m/sおよび速度v = sqrt(980) m/sでの大砲発射体の射程についてです。角度theta は、0 から pi/2 までの一様分布確率変数です。確率変数の関数と発射体の平均距離を使用して、シータの一様分布と範囲 fr(r) の確率密度関数をプロットする必要があります。

これまでのところ、物理学の方程式r = V^2*sin(2*theta)/gを使用して、平均とシグマを計算しました。sigmatheta = (pi/2)/sqrt(12) and 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) は、発射体の範囲の確率密度プロットです。

一様分布は正しくプロットされますが、確率密度関数にエラーがあるようです。私はそれを修正するための助けを得ることができるかどうか疑問に思っていました.

ps 長い背景情報で申し訳ありません ありがとうございます!

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)]);
4

1 に答える 1