如何获得积分的上限



我有一个概率分布函数,如下所示:

f = @(x) h0 * (1/sqrt(2*pi*sig2)) .* exp(-(x-mh0).^2 / (2*sig2))+ (1-h0) * (1/sqrt(2*pi*sig2)) .* exp(-(x-mh1).^2 / (2*sig2)); 

我正在执行Matlab。除了x之外,一切都是恒定的。

此函数的范围为(-4,8(。我想把这个区域分成相等的质量,即1/10(10个间隔,每个间隔的质量为1/10(。

我正在考虑集成它,并检查上限,以了解集成的结果。但我没有找到办法?有人能帮我吗?提前感谢

如果你不担心最终效率,简单的平分搜索就会找到分裂点。例如,一分为二:

sig2 = rand;
mh0 = rand;
h0 = rand;
mh1 = rand;
f = @(x) h0 * (1/sqrt(2*pi*sig2)) .* exp(-(x-mh0).^2 / (2*sig2))+ (1-h0) * (1/sqrt(2*pi*sig2)) .* exp(-(x-mh1).^2 / (2*sig2));
l = -4;
u = 8;
fprintf('total integral = %en', quad(f, l, u));
l0 = l;
u0 = u;
while u0 - l0 > 0.0001
m = 0.5 * (l0 + u0);
w = quad(f, l, m);
if w > 0.5
u0 = m;
else
l0 = m;
end
end
m = 0.5 * (l0 + u0);
fprintf('integral to %e = %en', m, quad(f, l, m));

要分成10个部分,请在子部分上递归。首先以0.5分割,然后以0.2分割低位区间,然后以0.1分割低位区间和0.3分割高位区间,然后再以0.3/0.5分割区间得到0.4。上部也是如此。

相关内容

  • 没有找到相关文章

最新更新