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.

  • $\begingroup$ 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. $\endgroup$ – DumpsterDoofus Oct 25 '14 at 22:31
  • $\begingroup$ 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. $\endgroup$ – DumpsterDoofus Oct 25 '14 at 22:39
  • $\begingroup$ 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. $\endgroup$ – bullwinkle Oct 26 '14 at 0:47

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(\mathbf{r})=\exp\left(-|W\mathbf{r}|\right)$$ where $$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\left(W^{-1}\mathbf{r}\right)=\exp\left(-|\mathbf{r}|\right).$$ By the scaling property $$\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 $\mathcal{F}$ is the Fourier transform and $A$ is any matrix, it suffices to compute $$\mathcal{F}\left(\exp\left(-|\mathbf{r}|\right),\mathbf{r},\mathbf{k}\right).$$ Since $\exp\left(-|\mathbf{r}|\right)$ is spherically symmetric, we obtain the spherical Bessel transform $$\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 $$\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}.$$

| improve this answer | |
  • $\begingroup$ Thank you, this is very helpful. $\endgroup$ – bullwinkle Oct 26 '14 at 0:44
  • $\begingroup$ @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\pi)^{-3/2}$ (I think). $\endgroup$ – DumpsterDoofus Oct 26 '14 at 0:47
  • $\begingroup$ 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} ] $\endgroup$ – bullwinkle Oct 26 '14 at 1:20
  • $\begingroup$ @bullwinkle: They're spherical Bessel functions $j_n(z)$, not ordinary Bessel functions $J_n(z)$ (see the article I hyperlinked in my answer). In this case $j_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]. $\endgroup$ – DumpsterDoofus Oct 26 '14 at 2:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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