MathGroup Archive 1998

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Can I get ComplexExpand to really work?

  • To: mathgroup at
  • Subject: [mg14572] Re: Can I get ComplexExpand to really work?
  • From: Topher Cawlfield <cawlfiel at>
  • Date: Fri, 30 Oct 1998 03:07:41 -0500
  • Organization: University of Illinois at Champaign-Urbana
  • References: <719f5p$>
  • Sender: owner-wri-mathgroup at

Many thanks for the help!

(I'm not quite sure how to best respond since this newsgroup seems to be
acting funny)

Daniel Lichtblau, P.J. Hinton, and Lars Hohmuth suggested that I use the
"Assumptions" option with Integrate.  Thanks, I didn't know about that!
This works well in the most simple case, but doesn't work quite right
in more general cases.

Integrate[E^(I a b x^2), {x, -Infinity, Infinity}, Assumptions->{a>0 ,

Essentially returns Sqrt[Pi/(2 a b)] (1 + I Sign[a b])

This is progress, but I could make the argument that if a>0 and b>0,
then  Sign[a b] = 1.

If I use "Assumptions->{a b > 0}" instead, I get the more simple result.

M. R. Schaferkotter suggested that I try the Declare.m package from
mathsource.  I haven't tried this yet, but I will soon.

For the specific problem I was working on, I was finally able to use
Mathematica very successfully!  I thought I would post it here since it
worked so well, and must have saved me at least a month of grinding
through algebra and making mistakes.  Well, it didn't save me a month
really, it just made one technique practical whereas it wouldn't have
been otherwise.

I want to use a Feynman path integral approach to find the transition
amplitude for an electron in a constant electric field.  This boils
down to doing a lot of integrals, noticing a pattern, and deducing the
limiting case of performing an infinite number of integrals.

I won't go into all the details, but I would end up needing to perform
integrals like:
Integrate[E^(I(a x^2 + b x y + c y^2 + d y z + e z^2 + f)), 
 {x, -Infinity, Infinity}, {y, -Infinity, Infinity}, {z, -Infinity,
where a, b, c, d, e, and f are simple ratios of physical constants and
parameters in the problem.

The best way to evaluate these by hand is to first "complete the square"
in x:
Integrate[E^(I(a (x+junk)^2 + more junk)),...]

The value of "junk" doesn't matter since you can rescale x.  The limits
of integration, being infinite, don't change.  You can use the
integration rule I was getting at above.  Then, repeat the process by
completing the square in y of "more junk", applying the integration
rule again, and moving on to z.

I couldn't find any functions in mathematica that would complete the
square for me, but the CoefficientList function helped a lot.  I made
my own function:

CompleteTheSquare[p_, x_]  := Module[{coeffs, fp},
 coeffs = CoefficientList[p, x];
 fp = coeffs[[3]] (x + coeffs[[2]] / (2 coeffs[[3]]) )^2;
 parts = {coeffs[[3]], Simplify[p - fp], fp};
 fp + parts[[2]]]  ]

This function returns the modified polynomial, and also sets the symbol
'parts' to a list containing the various pieces of the result.

I then defined a function that "did the integration": MyInt[a_] :=
Sqrt[- Pi / a]
So that the integral of E^(a (x-b)^2 + c) is MyInt[a] E^c.

And finally I made a function that did a Do loop over the integrals. 
This was a bit of work, but the results were really quite nice.  By
hand I could have only done 1 or 2 such integrals before tiring, and
that would have taken me hours.  With this I could try any number.  I
went up to 10, which just took a Mathematica a couple minutes.

The morals of the story (IMO):  (1) Use Mathematica for what it's good
at.  (2) One still needs to be somewhat knowledgable of and practiced
with mathematical techniques.  Even though Mathematica can do integrals
fairly well, it's still important to know how to do them "by hand". 
This is a good thing.

- Topher Cawlfield

p.s.  The fun part of the problem, besides the Mathematica programming,
was figuring out a strange number series that came up:

What's f(N)?

N  | f(N)
1  | 0
2  | 1/4
3  | 1
4  | 5/2
5  | 5
6  | 35/4
7  | 14
8  | 21
9  | 30
10 | 165/4
11 | 55

I'll post the answer tomorrow.  These were coefficients in the answer. 
To get one of them requires doing N-1 integrals symbolicly.

  • Prev by Date: Re: spaces in notebook
  • Next by Date: Re: Thread and Set
  • Previous by thread: Can I get ComplexExpand to really work?
  • Next by thread: Re: Can I get ComplexExpand to really work?