MathGroup Archive 2012

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

Search the Archive

Fourier DFT scaling problem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg126592] Fourier DFT scaling problem
  • From: Arthur <arth_e at ymail.com>
  • Date: Tue, 22 May 2012 05:19:31 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com

Hi all. 

I hope someone can help me with what seems to be a fairly elementary problem, nevertheless I have spent a good deal of time trying to come to a solution without any success. I am fairly new to the Fourier transform.

My problem is that the output of the Fourier[] command has a scaling dependency on my sampling parameters which I cannot figure out how to remove.

In general I have a numerical function Psi[x] (a wavefunction) and I would like to compute an approximation to the Fourier transform F[Psi[x]] ~~ Psihat[k].

I am assuming the best way to achieve this is using the built in Fourier[] function.

Now although I expect to have a numerical function Psi[x] my problem is apparent even when I define Psi[x] analytically. 

If I have



Psi[x_] := (Pi^(-1/4)) (E^(-x^2/2)) 

and take the continuous FT

FourierTransform[Psi[x], x, k]

OUT: (Pi^(-1/4)) (E^(-k^2/2)) 

The output is as expected an identical function of k (since Psi[x] was a normalized eigenfunction of the FT).

If I try to take the DFT of Psi[x] however:

/******CODE******/

n1 = 2^8.; (* sampling points *)
L = 32.; (* domain [-L/2,L/2] *)
dx = L/n1; (*step size*)

X = Table[-dx n1/2 + (n - 1) dx, {n, n1}]; (* lattice *)

rot[X_] := RotateLeft[X, n1/2]; (* rotate input/output of fourier *)
F[X_] := rot@Fourier@rot@X; (* DFT *)

SetOptions[ListLinePlot, PlotRange -> {{-L/2, L/2}, {0, 1}}, 
 DataRange -> {-L/2, L/2}, Filling -> Axis];

ListLinePlot[Abs[Psi[X]]^2]
ListLinePlot[Abs[F@Psi[X]]^2]


/******END******/
The second graph of the squared modulus of F@Psi[X] is evidently incorrectly scaled. Moreover this scaling error is not improved by increasing the sampling frequency, and is in fact exacerbated by it.

It seems reasonable that the scaling be dependent on the value dx, though I have done a lot of experimentation with the FourierParameters command to remove this dependence though I can't get it to work in a way that is independent of the choice of Psi[x].

Any help would be *greatly* appreciated!

Thanks and best regards,

Arthur



  • Prev by Date: Re: rHelp Finishing Mathematica Program
  • Next by Date: Re: Finding the real part of a symbolic complex expression
  • Previous by thread: help with layman terms algorithm development?
  • Next by thread: Re: Fourier DFT scaling problem