MathGroup Archive 2005

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

Search the Archive

Re: How can I compute the Fourier transform of a unit disk and a unit ball analytically by using Mathematica?

  • To: mathgroup at
  • Subject: [mg55289] Re: How can I compute the Fourier transform of a unit disk and a unit ball analytically by using Mathematica?
  • From: Paul Abbott <paul at>
  • Date: Fri, 18 Mar 2005 05:34:17 -0500 (EST)
  • Organization: The University of Western Australia
  • References: <d1bh0j$lsf$>
  • Sender: owner-wri-mathgroup at

In article <d1bh0j$lsf$1 at>,
 Zhou Jiang <jiangzhou_yz at> wrote:

> I am a fresh bird using Mathematica in my research. I am now trying to 
> compute the analytic expression of the Fourier transform of a unit disk and a 
> unit ball. I hope Mathematica 5.1 can work it out for me just for learning 
> purpose. My definition of the Fourier transform is a little different from 
> the built in function FourierTransfrom. 

No it isn't -- you just need to select the correct FourierParameters. 
See below and also

> I define the Fourier transform as
> F(u)=Integrate[f(x) Exp[-I x u], {x, -Infinity, Infity}] 
> and the 2D Fourier transform is
> F(u,v)=Integrate[f(x,y) Exp[-I (x u+y v)], {x,-Infinity, 
> Infinity},{y,-Infinity, Infinity}] 
> and hence 3D Fourier transform is defined as
> F(u,v,w)=Integrate[f(x,y,z) Exp[-I(x u+y v+z w)], {x,-Infinity, 
> Infinity},{y,-Infinity, Infinity},{z, -Infinity,Infity}] 
> Therefore, I computed the Fourier transform of the squarewave like
> Integrate[Boole[Abs[x]<=1] Exp[- I x u],{x,-Infinity,Infinity}]
> and Mathematica 5.1 gave a correct answer  2 sin(u)/u. 

You can obtain this using FourierTransform as follows:

 FourierTransform[Boole[Abs[x] <= 1], x, u, FourierParameters -> {1, 1}]
> I tried the 2D version of the problem as
> Integrate[Boole[x^2+y^2<=1] Exp[-I (x u+y v)],{ x,-Infinity, 
> Infity},{y,-Infinity, Infinity}] 
> and Mathematica cannot work it out any more. I am a little dispressed 

A combination of distressed and depressed?

> since this is a very classical problem and the result should be 2 Pi 
> J1[Sqrt[u^2+v^2]]/Sqrt[u^2+v^2] where J1 is the usuall Bessel function of 
> first order. 

To compute this integral a change of variables to polar coordinates is 
simplest. Here is one way to obtain this result:

[1] Change variables:

  Simplify[Exp[-I (x u + y v)] /. {x -> r Cos[q], y -> r Sin[q]}]

[2] Collect the trig functions together:

  % /. a_ Cos[q] + b_ Sin[q] :> Sqrt[a^2 + b^2] Cos[q + f]

where f = ArcTan[a,b].

[3] Since we are integrating over 0 <= q <= 2Pi, the phase, f, is 

  % /. f -> 0

  Assuming[r > 0 && Sqrt[u^2 + v^2] > 0, Integrate[%, {q, 0, 2 Pi}]]

[4] Now perform the integration over the unit ball, 0 <= r <=1:

  FunctionExpand[Integrate[% r, {r, 0, 1}]]

  FunctionExpand[Simplify[%, u^2 + v^2 > 0]]

One obtains the expected result:

  2 Pi BesselJ[1, Sqrt[u^2 + v^2]])/Sqrt[u^2 + v^2]

Note that the order of integration is important (to Mathematica): It is 
better to perform the q integration before the r integration.

> Of course, Mathematica did not give me any answer for the 3D 
> version of the problem. Can anyone give me some idea about how to make it 
> work? 

In general, R . P = r p Cos[q] where q is the angle between the 
n-dimensional vectors R and P and p = Sqrt[P.P]. Using this, one can 
easily show that the Fourier Transform of the unit ball in n-dimensions 

  FT[n_] := ((2 Pi^((n - 1)/2))/Gamma[(n - 1)/2]) *
   Integrate[r^(n - 1) Assuming[Element[p r, Reals], 
    Integrate[E^(-I r p Cos[q]) Sin[q]^(n - 2), {q, 0, Pi}]],
      {r, 0, 1}]

Moreover, one can then obtain the general result:

  (2 Pi)^(n/2) BesselJ[n/2, p]/p^(n/2)

It is probably not reasonable to expect Mathematica to perform the 
required change of variables to compute such a result automatically.


Paul Abbott                                   Phone: +61 8 6488 2734
School of Physics, M013                         Fax: +61 8 6488 1014
The University of Western Australia      (CRICOS Provider No 00126G)         
35 Stirling Highway
Crawley WA 6009                      mailto:paul at 

  • Prev by Date: Re: Re: Do loops in Mathematica
  • Next by Date: Re: Re: GridLines
  • Previous by thread: Re: How can I compute the Fourier transform of a unit disk and a unit ball analytically by using Mathematica?
  • Next by thread: Distance from point to set