Re: numerical fourier transforms
- To: mathgroup at smc.vnet.net
- Subject: [mg94913] Re: numerical fourier transforms
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Tue, 30 Dec 2008 05:54:16 -0500 (EST)
- References: <gjacun$p2k$1@smc.vnet.net>
Hi,
you don't understand what
{L_?Positive, \[CapitalOmega]_?Positive}
mean because you example call it with {-100, 100}
and -100 will never match _?Positive
But
FourierTransformApproximationList[
{Sin[t] Exp[-t^2], t},
{100, 1000}, 1024]
work as it should.
Regards
Jens
ventutech at gmail.com wrote:
> Hi All,
> I will try to ask my question the most precise way I can, this time.
> I am reading Trott's book on Numerics.
> I need to evaluate very heavy numerical Fourier Transforms and
> NFourierTransform is taking way too long.
> So I found the code that Trott suggest for an approximation of a
> FourierTransform, by making use of the "Fractional Fourier Transform".
> What do you think about this approach? Would you suggest the use of it
> for numerical evaluation of fourier Trasforms of complicated
> functions?
>
> Here is the code, anyway:
>
> FourierTransformApproximationList[{f_, t_Symbol}, {L_?Positive, \
> [CapitalOmega]_?Positive},
> n_Integer?Positive] := Module[{\[ScriptF] = Function[t, f], \
> [CapitalDelta]t = 2 L/n, fList,
> fFFT, sFactor},(*list for the fractional Fourier transform*)
> fList = Table[ Exp[2 I (2 - n) L \[CapitalOmega] n^-2 r] \[ScriptF][-
> L +
> 2 L r/n], {r, n}]; (*carry out fractional Fourier transform*)
> fFFT = Fourier[fList, FourierParameters -> {1, 2 L \[CapitalOmega]/
> (n Pi)}];
> (*s-dependent prefactor*)
> sFactor =
> Table[\[CapitalDelta]t/Sqrt[2 Pi] Exp[
> I (n^2 - 4) L \[CapitalOmega] n^-2]*
> Exp[2 I (2 - n) L \[CapitalOmega] n^-2 s], {s, n}];
> (*return approximate Fourier transform*)sFactor fFFT]
>
> My problem is that I don't understand it well enough to generalize it
> for my problem. Indeed I don't understand how to pass the function as
> an argument.
> The provided exemple is:
>
> (*exact continuous Fourier transform*)
> approxFT =
> FourierTransformApproximationList[{If[Abs[t] < 1, 1, 0], t}, {2,
> 10}, 512];
>
> (*exact continuous Fourier transform*)
>
> exactFT[\[Omega]_] =
> FourierTransform[If[Abs[t] < 1, 1, 0], t, \[Omega]] // ExpToTrig //
> Simplify
>
> But how can I change the function? If I type for exemple:
>
> approxFT =
> FourierTransformApproximationList[
> Sin[t] Exp[-t^2] &[t], {-100, 100}, 1024];
>
> It doesn't work. My point is that I don't understand the "{f_,
> t_Symbol}" pattern.
>
> Thank you very much in advance,
>
> Davide
>