Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

It is well known from theory that the Coulomb potential can be obtained as a Fourier transform in the following way:

$$ \int \frac{\mathrm{d}^3p}{\left( 2 \pi \right)^3} \frac{e^{\mathrm{i} \mathbf{p} \cdot \mathbf{r}}}{\mathbf{p}^2+m^2} = \frac{e^{-rm}}{4 \pi r} \hspace{20pt} r \equiv \sqrt{x^2+y^2+z^2}$$

(The mass term is here for mathematical convergence reasons, one can set the mass to zero after the transform. The Fourier transform also has a precise physical meaning, but that's out of the scope of this question.) I am trying to reproduce this result with Wolfram Mathematica; skipping some unnecessary constants I use the following code:

FourierTransform[1/(k*k + q*q + r*r + m*m), {k, q, r}, {x, y, z}]

which does not yield the expected result... I'm not an expert of Mathematica, by any means, but I cannot see why it gets this Fourier transform wrong.

share|improve this question
If it's not a charade, could you please give use the (unexpected) output? – F'x Apr 17 '12 at 21:41
@F'x In 2D it fails to evaluate the output with the mass term. In 3D it gets stuck for ages thinking and then gives the input as output (not able to solve it, I suppose). I remember that in 2D the mass is not needed for convergence, so I've tried and the output is: 1/2 (-HeavisideTheta[-x] (2 EulerGamma + Log[-x - I y] + Log[-x + I y]) - HeavisideTheta[x] (2 EulerGamma + Log[x - I y] + Log[x + I y])) while I was expecting: $k \ln(r)$ – zakk Apr 17 '12 at 21:44
I'm fine with the logs, but the EulerGamma is completely unexpected! – zakk Apr 17 '12 at 21:46
It often helps to assist Mathematica with a little preliminary analysis. Upon observing the integral is spherically symmetric, you may set $\mathbf{r}=(r,0,0)$ and perform the integration over the first coordinate. (Set $m=0$; you don't need this term for convergence.) The residual symmetry suggests using polar coordinates, in which the integration is immediate and yields $1/(4\pi r)$. – whuber Apr 17 '12 at 22:50
up vote 18 down vote accepted

The problem here is that Mathematica doesn't recognize {x, y, z} as some kind of a vector object that should be treated as grouped together; instead, it substitutes in three independent variables, and probably starts integrating them one by one. The result is a very complicated integral.

If you do the coordinate transformation yourself, you can reproduce the result. Simply use $\mathrm dp = \mathrm d\|p\|\|p\|^2\mathrm d\vartheta\sin(\vartheta)$ to transform to spherical. The resulting integral can be calculated:

Assuming[pAbs >= 0 && m > 0 && r > 0,
    (1/(2*Pi)^3)*Integrate[ (* phi integral *)
        Integrate[ (* |p| integral *)
            Integrate[ (* theta integral *)
                (Exp[I*r*pAbs*Cos[pTheta]]/(pAbs^2 + m^2))*pAbs^2*Sin[pTheta],
                {pTheta, 0, Pi}
            {pAbs, 0, Infinity}
        {pPhi, 0, 2*Pi}

$\dfrac{e^{-mr}}{4\pi r}$

share|improve this answer
I can't reproduce the result, if I copy your code and paste it into a new Mathematica workbook I get: -(Sinh[m r]/(4 [Pi] r)) however, this is clearly the way to go! :-) Answer accepted! – zakk Apr 17 '12 at 23:23
I can't reproduce your irreproducability: - Did you try evaluating using a fresh kernel? – David Apr 17 '12 at 23:25

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.