Re: Integrate and Boole problems
- To: mathgroup at smc.vnet.net
- Subject: [mg58452] Re: Integrate and Boole problems
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Sun, 3 Jul 2005 03:57:03 -0400 (EDT)
- Organization: The Open University, Milton Keynes, England
- References: <da0bq0$fm8$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On 7/1/05, Chris Becker <topher at csh.rit.edu> wrote:
> I'm sorry, it must have pasted incorrectly, it wasn't an equal sign,
it was
> a less than or equal.
>
> Integrate[Boole[((x - 1)^2 + y^2 + z^2 - 3^2)*((x + 1)^2 + y^2 + z^2
- 3^2)
> <= 0], {x, -Infinity, Infinity}, {y, -Infinity, Infinity}, {z, -
> Infinity, Infinity}]
>
>
> Mathematica 5.1 is able to integrate over Boolean defined regions, so in
> effect if you can define a region with inequalities, integrating over it
> will return it's area (if two dimensional) or volume (as is the case
above).
> More about it can be found here:
>
>
http://www.wolfram.com/products/mathematica/newin51/integrationregions.html
>
> Chris
>
Hi Chris,
Now I understand what you are doing :-) Unfortunately, with the correct
inequality I get the same result as yours: there is a discrepancy of
roughly a factor two between the numerical evaluation of the symbolic
solution and the direct numerical integration.
More puzzling, I have had the good (bad?) idea to use the *Timing*
function and the symbolic expression returned by *Integrate* is _not_
the same that the expression return by the command use alone (although
the numerical evaluation of both expression yields the same value).
So I am wondering why, or in which way, the *Timing* command would
interfere with the algorithms used by *Integrate* while *Timing* is
suppose just to keep tract of the consumed CPU time?
First, without the timing
In[1]:=
Integrate[Boole[((x - 1)^2 + y^2 + z^2 - 3^2)*
((x + 1)^2 + y^2 + z^2 - 3^2) <= 0],
{x, -Infinity, Infinity}, {y, -Infinity, Infinity},
{z, -Infinity, Infinity}]
Out[1]=
(56*Pi)/3 - (4/135)*(315*Pi -
2*(1008*EllipticE[-(1/2)] -
I*(39*Sqrt[6]*EllipticE[2/3] -
78*EllipticE[3/2] - 417*I*EllipticK[-(1/2)] -
13*Sqrt[6]*EllipticK[2/3] + 900*Sqrt[2]*
EllipticPi[-1, (1/2)*I*Log[2 + Sqrt[3]],
-2] - 315*Sqrt[2]*EllipticPi[2,
(1/2)*I*Log[2 + Sqrt[3]], -2]))) +
(2/135)*(585*Pi - 2*(1008*EllipticE[-(1/2)] -
I*(39*Sqrt[6]*EllipticE[2/3] -
78*EllipticE[3/2] - 417*I*EllipticK[-(1/2)] -
13*Sqrt[6]*EllipticK[2/3] + 900*Sqrt[2]*
EllipticPi[-1, (1/2)*I*Log[2 + Sqrt[3]],
-2] - 315*Sqrt[2]*EllipticPi[2,
(1/2)*I*Log[2 + Sqrt[3]], -2]))) +
2*Integrate[(1/2)*Pi*(-2 + x)*(4 + x) +
2*Sqrt[(-(-2 + x))*x*(4 + x)] -
(-4 + x)*(2 + x)*ArcCot[2/Sqrt[-2 + 8/x - x]],
{x, 0, 2}] +
2*Integrate[(1/2)*((-Pi)*(-4 + x)*(2 + x) -
4*Sqrt[(-(-2 + x))*x*(4 + x)] +
2*(-4 + x)*(2 + x)*ArcCot[
2/Sqrt[-2 + 8/x - x]]), {x, 0, 2}] +
Integrate[(1/2)*(-4*Sqrt[(-4 + x)*x*(2 + x)] -
Pi*(-2 + x)*(4 + x) - 2*(-2 + x)*(4 + x)*
ArcTan[Sqrt[(-4 + x)*x*(2 + x)]/(2*x)]),
{x, -2, 0}]
In[2]:=
N[%]
Out[2]=
55.04761032732088 + 5.3618391912432685*^-8*I
In[3]:=
Chop[%]
Out[3]=
55.04761032732088 + 5.3618391912432685*^-8*I
In[4]:=
NIntegrate[Boole[((x - 1)^2 + y^2 + z^2 - 3^2)*
((x + 1)^2 + y^2 + z^2 - 3^2) <= 0],
{x, -Infinity, Infinity}, {y, -Infinity, Infinity},
{z, -Infinity, Infinity}]
Out[4]=
108.90854533339399 - 2.749275252793041*^-29*I
In[5]:=
Chop[%]
Out[5]=
108.90854533339399
Now with the *Timing* function
In[1]:=
Timing[sol = Integrate[
Boole[((x - 1)^2 + y^2 + z^2 - 3^2)*
((x + 1)^2 + y^2 + z^2 - 3^2) <= 0],
{x, -Infinity, Infinity}, {y, -Infinity,
Infinity}, {z, -Infinity, Infinity}]]
Out[1]=
{646.094*Second, (56*Pi)/3 -
(2/45)*(315*Pi - 2*(1008*EllipticE[-(1/2)] -
I*(39*Sqrt[6]*EllipticE[2/3] -
78*EllipticE[3/2] - 417*I*EllipticK[-(1/2)] -
13*Sqrt[6]*EllipticK[2/3] + 900*Sqrt[2]*
EllipticPi[-1, (1/2)*I*Log[2 + Sqrt[3]],
-2] - 315*Sqrt[2]*EllipticPi[2,
(1/2)*I*Log[2 + Sqrt[3]], -2]))) +
(2/45)*(585*Pi - 2*(1008*EllipticE[-(1/2)] -
I*(39*Sqrt[6]*EllipticE[2/3] -
78*EllipticE[3/2] - 417*I*EllipticK[-(1/2)] -
13*Sqrt[6]*EllipticK[2/3] + 900*Sqrt[2]*
EllipticPi[-1, (1/2)*I*Log[2 + Sqrt[3]],
-2] - 315*Sqrt[2]*EllipticPi[2,
(1/2)*I*Log[2 + Sqrt[3]], -2]))) +
(1/135)*(-630*Pi - 4*I*Sqrt[2]*
(39*Sqrt[3]*EllipticE[2/3] - 39*Sqrt[3]*
EllipticE[ArcCsc[Sqrt[2/3]], 2/3] +
13*Sqrt[3]*EllipticF[(1/2)*(Pi +
I*(Log[2] - 2*Log[1 + Sqrt[3]])), 2/3] -
663*EllipticF[I*(-(Log[2]/2) +
Log[1 + Sqrt[3]]), -2] - 13*Sqrt[3]*
EllipticK[2/3] + 900*EllipticPi[-1,
I*(-(Log[2]/2) + Log[1 + Sqrt[3]]), -2] -
315*EllipticPi[2, I*(-(Log[2]/2) +
Log[1 + Sqrt[3]]), -2]) +
405*Sqrt[6]*Pi^(3/2)*
(-((2*Hypergeometric2F1[-(5/4), -(1/4), 1/2,
1/9])/(Gamma[-(3/4)]*Gamma[9/4])) +
Hypergeometric2F1[-(3/4), 1/4, 3/2, 1/9]/
(Gamma[-(1/4)]*Gamma[7/4]))) +
Integrate[(1/2)*(-4*Sqrt[(-4 + x)*x*(2 + x)] -
Pi*(-2 + x)*(4 + x) - 2*(-2 + x)*(4 + x)*
ArcTan[Sqrt[(-4 + x)*x*(2 + x)]/(2*x)]),
{x, -2, 0}]}
In[2]:=
Timing[N[sol]]
Out[2]=
{6.719000000000051*Second, 53.2858037103929 +
3.8298848235073785*^-9*I}
In[3]:=
Timing[numsol = NIntegrate[
Boole[((x - 1)^2 + y^2 + z^2 - 3^2)*
((x + 1)^2 + y^2 + z^2 - 3^2) <= 0],
{x, -Infinity, Infinity}, {y, -Infinity,
Infinity}, {z, -Infinity, Infinity}]]
Out[3]=
{6.467999999999961*Second, 108.90854533339399 -
2.749275252793041*^-29*I}
In[4]:=
Chop[numsol]
Out[4]=
108.90854533339399
In[6]:=
$Version
Out[6]=
"5.1 for Microsoft Windows (October 25, 2004)"
Best regards,
/J.M.