Integrating a complicated expression involving Sign[...] etc.
- To: mathgroup at smc.vnet.net
- Subject: [mg56161] Integrating a complicated expression involving Sign[...] etc.
- From: Christian Mikkelsen <s010132 at student.dtu.dk>
- Date: Sun, 17 Apr 2005 03:07:07 -0400 (EDT)
- Organization: UNI-C
- Sender: owner-wri-mathgroup at wolfram.com
I want to ask some general questions. I get some very complicated intermediate results (see expressions below) that Mathematica does not proces (Integrate) within a day or two. 1) Does it normally pay off just leaving it to it? If Mathematica is still running does it mean that it is doing meaningful transformations and calculations? 2) I would like to understand the structure of some of the intermediate results ("Thetaintegrant" in particular) to see if Mathematica might need a little help (see my earlier post and the kludge below). Is there any good way to do that? Using TreeForm, for example if I could just look at the upper most levels of the expression tree? 3) My problem seems to have a lot of structure so I am hopeful that something can be done to help Mathematica a little. Oh, and a easy one... :-) 4) How do I use $Assumptions to tell Mathematica that A is real etc. globally? ----- (* This is actually a spherical Bessel-function *) j[k_, n_] = ((-I)^n*Sqrt[2*Pi]*BesselJ[1/2 + n, k])/Sqrt[k] (* A, B, C are to substituted by sines and cosines to make up polar coordinates *) StorMatrix = {{B^2+C^2, A B, A C}, {B A, A^2+C^2, B C}, {C A, C B, A^2+B^2}}; (* My integrant in the case (0, 0) *) Integrant = Simplify[StorMatrix j[k A, n] j[k B, m] j[k a, 0] Exp[I k (A x + B y + C z)]/.{n->0, m->0}, Assumptions -> {A \[Element] Reals, B \[Element] Reals, C \[Element] Reals, a > 0, x \[Element] Reals, y \[Element] Reals, z \[Element] Reals}]; (* Mathematica refuses to do the definite integral but happily does the indefinite one *) KIntegral = Integrate[Integrant, k, Assumptions -> {A \[Element] Reals, B \[Element] Reals, C \[Element] Reals, a > 0, x \[Element] Reals, y \[Element] Reals, z \[Element] Reals}]; (* I calculate the lower limit, no problems here *) Klowlimit = Limit[KIntegral, k -> 0, Assumptions -> {A \[Element] Reals, B \[Element] Reals, C \[Element] Reals, a > 0, x \[Element] Reals, y \[Element] Reals, z \[Element] Reals}]//Simplify; (* Upper limit, with ComplexExpand and cheating. True? *) KinfIntegral = ComplexExpand[KIntegral] /. {ExpIntegralEi[ I A_ k] -> Sign[ I A] Pi, ExpIntegralEi[-I A_ k] -> Sign[-I A] Pi}; Kinflimit = Limit[KinfIntegral, k -> \[Infinity], Assumptions -> {A \[Element] Reals, B \[Element] Reals, C \[Element] Reals, a > 0, x \[Element] Reals, y \[Element] Reals, z \[Element] Reals}]; Thetaintegrant = (Kinflimit-Klowlimit)/.{A->Sqrt[1-w^2] P, B->Sqrt[1-w^2] Q, C-> w}; (* Warning: Mathematica 5.1 gets stuck on this integral : *) Thetaintegral = Integrate[Thetaintegrant, {w, -1, 1}, Assumptions -> {P >= -1, P <= 1, Q >= -1, Q <= 1, a > 0}]