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

Wolfram alpha はそれが可能です。

定積分の計算は最大標準計算時間を直接超えますが、不定積分を見つけることができます。xその式を0 から 1 の間に制限するということは、単純に に等しいことを意味x1ます。これにより、次の式が得られます。この式の代替形式は、ベータ分布の平均の標準形式です。

Wolfram Mathematica (および Alpha) は、MuPad よりも単純に記号演算が優れています。MATLAB は、得意とする分野 (数値計算) にのみ使用することをお勧めします。おそらくいくつかの例外的なケースを除いて、MuPad が Wolfram によって達成されたものに近づくことはないと思います。

于 2013-09-03T10:03:24.783 に答える
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) の平均になります。(ここでの「ベータ」は、ベータ関数ではなく、betaMatlab の関数のような分布を示すことに注意してください)。

一般的な (数学的) ソリューションが必要な場合は、Rody の回答を参照してください。これには Wolfram が適しています。

betapdf編集:そこに書いた式全体ではなく、関数によって(コード内で) f を定義できます。

于 2013-09-03T10:30:52.537 に答える
1

ベータ分布の平均は です1/(1+b/a)。たとえば、ここを参照してください

于 2013-09-03T09:36:23.307 に答える