1

这是我计算平均值的代码:

syms a b x

f=1/(beta(a,b))*x^(a-1)*(1-x)^(b-1);

int(x*f,x,0,1)

Warning: Explicit integral could not be found. 

ans =


int((x*x^(a - 1)*(1 - x)^(b - 1))/beta(a, b), x == 0..1)

我怎样才能解决这个问题?

这是我对 TryHArd 的结果:

syms x a b

f=int(x^(a-1)*(1-x)^(b-1),x,0,1)

警告:找不到显式积分。

f =

piecewise([0 < real(a) and 0 < real(b), beta(a, b)], [real(a) <= 0 or real(b) <= 0, int(x^(a - 1)*(1 - x)^(b - 1), x == 0..1)])

我的结果与gamma(a)*gamma(b)/gamma(a+b)TryHard 的结果不同。

4

4 回答 4

2

我假设beta你的意思是

beta(z,w) = t.^(z-1) .* (1-t).^(w-1) dt 从 0 到 1 的积分。

然后分解问题:

>> int((x^(a-1))*((1-x)^(b-1)),x,0,1)

ans =

gamma(b)*gamma(a)/gamma(a+b)

所需的积分等价于:

>> bint=int((x^(a-1))*((1-x)^(b-1)),x,0,1);
>> int( x*((x^(a-1))*((1-x)^(b-1)))/bint,x,0,1)

ans =

a/(a+b)

(这是使用早期版本的 Matlab SMT(在 R14 上)计算得出的,但应作为指导。)

于 2013-09-03T10:34:03.740 回答
1

如果您需要某些特定参数 alpha 和 beta 的结果,您可以使用betastat. 此函数也可以与向量一起使用,如下所示:

A=[4 4 4];
B=[5 6 7];
[m,v]=betastat(A,B)

这将为您提供m(均值)和v(方差)的 3 元素向量。对于此示例,m将是 beta(4,5)、beta(4,6) 和 beta(4,7) 的均值。(注意这里的“beta”表示分布,而不是 beta 函数,就像betaMatlab 上的函数)。

如果您需要一般(数学)解决方案,请参阅罗迪的回答。Wolfram 非常适合这一点。

编辑:您可以通过函数betapdf而不是您在那里编写的整个公式来定义 f (在您的代码中)。

于 2013-09-03T10:30:52.537 回答
1

Beta 分布的均值是1/(1+b/a)。参见例如here

于 2013-09-03T09:36:23.307 回答
1

Wolfram alpha 能够做到这一点。

计算定积分直接超过最大标准计算时间,但它可以找到不定积分。将该表达式限制x在 0 和 1 之间,意味着简单地x等于1。这导致了这个表达式,它的替代形式是 beta 分布均值的标准形式。

Wolfram Mathematica (& Alpha) 在符号数学方面比 MuPad 更胜一筹。我建议仅将 MATLAB 用于它擅长的领域:数值数学。除了一些边缘案例,我不认为 MuPad 会接近 Wolfram 所取得的成就。

于 2013-09-03T10:03:24.783 回答