First time trying to do something “real” in Mathematica,

I am having trouble getting it to calculate this Fourier transform.

It runs for a long time, then just prints the input expression.

FourierTransform[ Exp[-Sqrt[Wx x^2 + Wy y^2 + Wz z^2]],

{x, y, z}, {u, v, w},

Assumptions -> {x âˆˆ Reals, y âˆˆ Reals,

z âˆˆ Reals,

Wx âˆˆ Reals, Wy âˆˆ Reals, Wz âˆˆ Reals,

Wx > 0, Wy > 0, Wz > 0}

]

I also tried it as an integral.

I am sure the problem is in me, not in mathematica.

=================

I also have had some problems (using Mathematica 10.0.1) on this and related examples. I’ll post either an answer to this, or a separate question when I have time to look further.

– DumpsterDoofus

Oct 25 ’14 at 22:31

I’d like to point out that a scaling of variables allows you to reduce this to the Fourier-Bessel Transform of a decaying exponential, which can then be converted into the reciprocal space profile by a scaling. I’ll post this as a partial answer in a while.

– DumpsterDoofus

Oct 25 ’14 at 22:39

I had also tried adding a constant ‘a’, meaning (briefly) f(r)=exp(- W r + a), which would be a suitable answer in my application if ‘a’ is set to a small value. Thinking that this would fix the singularity in the derivative at the origin. It also did not work.

– bullwinkle

Oct 26 ’14 at 0:47

=================

1 Answer

1

=================

Mathematica’s FourierTransform can be a bit difficult at times, so I’ll let someone else address whether your code can be tweaked to work, and instead show how to do it symbolically. Defining

f(r)=exp(−|Wr|)f(\mathbf{r})=\exp\left(-|W\mathbf{r}|\right)

where

W=(√wx000√wy000√wz)W=\left(

\begin{array}{ccc}

\sqrt{w_x} & 0 & 0 \\

0 & \sqrt{w_y} & 0 \\

0 & 0 & \sqrt{w_z} \\

\end{array}

\right)

note that

f(W−1r)=exp(−|r|).f\left(W^{-1}\mathbf{r}\right)=\exp\left(-|\mathbf{r}|\right).

By the scaling property

F(f(Ar),r,k)=1det(A)F(f(r),r,kA−1)\mathcal{F}\left(f(A\mathbf{r}),\mathbf{r},\mathbf{k}\right)=\frac{1}{\text{det}(A)}\mathcal{F}\left(f(\mathbf{r}),\mathbf{r},\mathbf{k}A^{-1}\right)

where F\mathcal{F} is the Fourier transform and AA is any matrix, it suffices to compute F(exp(−|r|),r,k).\mathcal{F}\left(\exp\left(-|\mathbf{r}|\right),\mathbf{r},\mathbf{k}\right).

Since exp(−|r|)\exp\left(-|\mathbf{r}|\right) is spherically symmetric, we obtain the spherical Bessel transform

F(exp(−|r|),r,k)=∫∞04πj0(|k|r)r2exp(−r)dr=8π(|k|2+1)2\mathcal{F}\left(\exp\left(-|\mathbf{r}|\right),\mathbf{r},\mathbf{k}\right)=\int_0^\infty 4\pi j_0\left(|\mathbf{k}|r\right)r^2\exp(-r)dr=\frac{8\pi}{\left(|\mathbf{k}|^2+1\right)^2}

giving the final desired result

F(exp(−|Wr|),r,k)=8πdet(W)(|kW−1|2+1)2=8π√wxwywz(k2xwx+k2ywy+k2zwz+1)2.\mathcal{F}\left(\exp\left(-|W\mathbf{r}|\right),\mathbf{r},\mathbf{k}\right)=\frac{8\pi}{\text{det}(W)\left(|\mathbf{k}W^{-1}|^2+1\right)^2}=\frac{8\pi}{\sqrt{w_xw_yw_z}\left(\frac{k_x^2}{w_x}+\frac{k_y^2}{w_y}+\frac{k_z^2}{w_z}+1\right)^2}.

Thank you, this is very helpful.

– bullwinkle

Oct 26 ’14 at 0:44

@bullwinkle: One minor note: the Fourier transform definition in the linked article is nonunitary, whereas Mathematica’s definition of FourierTransform is unitary, so you should include an extra factor of (2π)−3/2(2\pi)^{-3/2} (I think).

– DumpsterDoofus

Oct 26 ’14 at 0:47

Doofus did you use Mathematica for the Bessel integral? If so could you post your code? I am trying this… Integrate[ 4 Pi BesselJ[0, Sqrt[u^2 + v^2] r] Exp[-r] r^2, {r, 0, Infinity}, Assumptions -> {r [Element] Reals, u [Element] Reals, v [Element] Reals, u >= 0, v >= 0} ]

– bullwinkle

Oct 26 ’14 at 1:20

@bullwinkle: They’re spherical Bessel functions jn(z)j_n(z), not ordinary Bessel functions J_n(z)J_n(z) (see the article I hyperlinked in my answer). In this case j_0(z)=\text{sinc}(z)=\sin(z)/zj_0(z)=\text{sinc}(z)=\sin(z)/z. I used 4 \[Pi] Integrate[(E^-r r Sin[k r])/k, {r, 0, \[Infinity]}, Assumptions -> k > 0].

– DumpsterDoofus

Oct 26 ’14 at 2:06