我需要绘制概率密度函数{p(z,phi)}并需要对其进行积分,如附件中所示#1 enter image description here 其中Af和Vf是常数, phi是角度, z是距离(数值,可以是小数)
P(z,phi)将是力值以及z和phi的相应不同值。 有人可以在MATLAB上指导我,如何编写这些方程组?
答案 0 :(得分:0)
要插入您的函数,您应该创建一个m文件或匿名函数
f = @(z,phi)P(z,phi)* p(z,phi)
您可以类似地构建P和p。然后你需要使用一个数值积分器,比如ode45来整合f两次......一次超过f,一次超过phi。
答案 1 :(得分:0)
如果我理解正确的话,你可以将-lf / 2和lf / 2之间的均匀概率分布乘以另一个看起来像正弦波第一个四分之一的概率分布。您想知道最终的概率分布。
基本上如果lf / 2> pi / 2你最终得到了相同的发行版。正弦分布完全在均匀分布内。如果(lf / 2)<(pi / 2)你的正弦分布的一部分均匀分布。然后,您希望将概率分布除以您选择的部分,以便积分保持为1。它必须保持概率分布。
sin(x)的积分是cos(x)。所以在这种情况下你会偏离(1-cos(lf / 2))
下面是一个让它更加醒目的脚本:
lf=2;
xx = linspace(-lf,lf,1E4);
p1 = (xx>-lf/2&xx<lf/2)*(1/lf);
p2 = zeros(size(xx));
p2(xx>0&xx<pi/2) = sin(xx(xx>0&xx<pi/2));
p3 = p2.*p1.*lf;
if lf<pi
p3 = p3./(1-cos(lf/2));
end
plot(xx,p1,xx,p2,xx,p3)
legend({'uniform distribution','sine','result'})
%integrals (actually Riemann sums):
sum(p1.*(xx(2)-xx(1)))
sum(p2.*(xx(2)-xx(1)))
sum(p3.*(xx(2)-xx(1)))