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