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