Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2008

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

Search the Archive

Re: Fourier Transform

  • To: mathgroup at smc.vnet.net
  • Subject: [mg93540] Re: Fourier Transform
  • From: Nikolaus Rath <Nikolaus at rath.org>
  • Date: Thu, 13 Nov 2008 21:08:18 -0500 (EST)
  • References: <gf8rgp$poq$1@smc.vnet.net> <gfbur0$43e$1@smc.vnet.net> <gfgqhc$dkv$1@smc.vnet.net> <gfh3cl$g1l$1@smc.vnet.net>

Jens-Peer Kuska <kuska at informatik.uni-leipzig.de> writes:
>>>> Consider the following expression:
>>>>
>>>> expr = (c^2 Sqrt[2 \[Pi]]
>>>>     DiracDelta[ky + sy] DiracDelta[sz])/(-c^2 sx^2 - c^2 sy^2 -
>>>>    c^2 sz^2 + \[Omega]^2);
>>>> $Assumptions = {{x, y, z} \[Element] Reals};
>>>> InverseFourierTransform[expr, {sx, sy, sz}, {x, y, z}] // Timing
>>>> Integrate[
>>>>   1/Sqrt[2 \[Pi]] Exp[-I sx x] Exp[-I sy y] Exp[-I sz z]
>>>>    expr, {sx, -\[Infinity], \[Infinity]}, {sy, -\[Infinity], \
>>>> \[Infinity]}, {sz, -\[Infinity], \[Infinity]}] // Timing
>>>>
>>>> On my system with Mathematica 6, the explicit integration takes 3
>>>> times as long as the InverseFourierTransform and also gives several
>>>> additional required assumptions for the same result (e.g. Im[-ky^2 +
>>>> \[Omega]^2/c^2] != 0 || Re[-ky^2 + \[Omega]^2/c^2] <= 0).
>>>>
>>>> How is this possible? Is Mathematica using some special tricks when
>>>> evaluating the InverseFourierTransform?
>>> ClearSystemCache[]
>>> expr = (c^2 Sqrt[2 \[Pi]] DiracDelta[ky + sy] DiracDelta[
>>>        sz])/(-c^2 sx^2 - c^2 sy^2 - c^2 sz^2 + \[Omega]^2);
>>> $Assumptions = {{x, y, z} \[Element] Reals};
>>> InverseFourierTransform[expr, {sx, sy, sz}, {x, y, z}] // Timing
>>> Integrate[
>>>    1/Sqrt[2 \[Pi]] Exp[-I sx x] Exp[-I sy y] Exp[-I sz z] expr, {sx, =
-\
>>> \[Infinity], \[Infinity]}, {sy, -\[Infinity], \[Infinity]}, {sz, -\
>>> \[Infinity], \[Infinity]}, GenerateConditions -> False] // Timing
>>>
>>> is not so different.
>>
>> It's not? This is what I get:
>>
>> {9.98862, -(1/2) E^(-(Abs[x]/Sqrt[(c^2/(c^2 ky^2 - \[Omega]^2))]))
>>    Sqrt[c^2/(c^2 ky^2 - \[Omega]^2)] (Cos[ky y] + I Sin[ky y])}
>>
>> for the Fourier Transform and
>>
>> {13.5928, -E^(
>>    I ky y - Abs[x]/Sqrt[c^2/(c^2 ky^2 - \[Omega]^2)]) \[Pi]^(3/2)
>>    Sqrt[c^2/(c^2 ky^2 \[Pi] - \[Pi] \[Omega]^2)]}
>>
>> for the explicit integral.
>>
>> it's no longer a factor 3, but it's still quite a difference.
>> Moreover, now even the results are different (look at the factor of
>> 1/2 and pi).
>>
>> Any ideas?
> Hi,
>
> the factors are different, because there are several
> "normalizations" used. Theoretical physicists prefer
> the factor 1/Sqrt[2Pi] per dimension in the forward and backward transf=
orm
> (because the formulas  are sooooooo symmetric), the
> rest of the world seems to prefer 1 in the forward and 1/(2Pi)
> per dimension in the backward transform because it save
> a multiplication by a complicated number like 1/Sqrt[2Pi].

Of course. But I made sure that my integral is exactly equal to the
one used by InverseFourierTransform (according to the Mathematica
Help), so this cannot be the reason.

> Clearly the algorithms are different, because some
> FourierTransform[]s are placed in a table for cases when you have to
> solve a complex path integral, while Integrate[] probably not use
> such tricks.

But what is the point of that? There is nothing special about the
integral in a Fourier transform, so any functionality that helps to
evaluate integrals is best added to Integrate[].


   -Nikolaus

--
 =C2=BBIt is not worth an intelligent man's time to be in the majority.
  By definition, there are already enough people to do that.=C2=AB
                                                         -J.H. Hardy

  PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C


  • Prev by Date: Re: Storing and Loading Definitions / Emulating Associative Arrays
  • Next by Date: Re: How do little quickest
  • Previous by thread: Re: Fourier Transform
  • Next by thread: Re: Fourier Transform