7.7 beta distribution (2.11.95)

7.7.1 Vadim Kutsyy
7.7.2 Neil E. Berger 312-413-2139
7.7.3 Michael Monagan
7.7.4 Robert Israel

7.7.1 Vadim Kutsyy

I tried to let Maple to calculate moments of beta distributions:

> assume(r1>0); 
> assume(r2>0); 
> int(x^k*x^(r1-1)*(1-x)^(r2-1)/Beta(r1,r2),x=0..1); 
                       1 
                       /  k  (r1~ - 1)        (r2~ - 1) 
                      |  x  x          (1 - x) 
                      |  ------------------------------ dx 
                      |          Beta(r1~, r2~) 
                     / 
                     0 
> simplify(%); 
                       1 
                       /  (r1~ - 1 + k)        (r2~ - 1) 
                      |  x              (1 - x) 
                      |  ------------------------------- dx 
                      |           Beta(r1~, r2~) 
                     / 
                     0
 

Maple even can not compute simple Beta integral:

> int(x^(r1-1)*(1-x)^(r2-1),x=0..1); 
                         1 
                         / 
                        |   (r1~ - 1)        (r2~ - 1) 
                        |  x          (1 - x)          dx 
                        | 
                       / 
                       0
 

which is equal to Beta(r1,r2).

If I assign that integral to be equal to Beta(r1,r2), Maple will give this answer to the integral, but not if I change r1 by (r1+1) (which is nessary to compute moments).

7.7.2 Neil E. Berger 312-413-2139

And what is even worse is that

int(exp(-t)*t^(z-1),t=0..infinity)
 

is not even recognized as GAMMA(z)

The Beta function is defined in terms of the GAMMA function.

The real point is that Maple does not know about Beta except how to compute it if given floats, and also if given specific exact numbers in the form Beta(x,y) for which the GAMMA function definition makes sense and has an exact value. For an inside look do:

interface(verboseproc=2); 
print(GAMMA); 
print(`evalf/GAMMA`); 
print(Beta);
 

This does not mean that Maple can recognize a given integral to be Beta or for that matter to be GAMMA. If the integration techniques were based on pattern matching this might be a simple fix, but my understanding is that they are not, and it is not.

7.7.3 Michael Monagan

Neil, you need to tell Maple that \(z>0\) to do this integral. I’m sorry that Maple doesn’t give you a clue, it should, and it does in Release 4. In Release 3, if you do infolevel[int] := 4; then Maple will then tell you that it could not determine the sign of \(z\) and you will then know to assume(z>0); Here is the integral computed

    |\^/|     Maple V Release 3 (Simon Fraser University) 
._|\|   |/|_. Copyright (c) 1981-1994 by Waterloo Maple Software and the 
 \  MAPLE  /  University of Waterloo. All rights reserved. Maple and Maple V 
 <____ ____>  are registered trademarks of Waterloo Maple Software. 
      |       Type ? for help. 
> assume(z>0); 
> int(exp(-t)*t^(z-1),t=0..infinity); 
 
                                   GAMMA(z~)
 
>The Beta function is defined in terms of the GAMMA function. 
> 
>The real point is that Maple does not know about Beta except how to 
>compute it if given floats, and also if given specific exact ...
 

This is not true. There are integrals where Maple will return the result as a formula involving the Beta function. I don’t have one handy, perhaps someone else can show an example. Unfortunately, Maple is has hidden this capability from you and I can’t blame you for comming to this conclusion.

7.7.4 Robert Israel

It is (at least in Release 3) if you "assume(z > 0)", which ensures convergence. It doesn’t work to "assume(Re(z) > 0)", nor does int(exp(-t)*t^(x+I*y-1), t=0..infinity) work with assumptions \(x > 0\) and \(y\) real.