Re: Numerical Differentiation using Fourier Transform
- To: mathgroup at smc.vnet.net
- Subject: [mg32948] Re: Numerical Differentiation using Fourier Transform
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Thu, 21 Feb 2002 02:07:00 -0500 (EST)
- Organization: Universitaet Leipzig
- References: <a4vgmt$r4b$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
Hi, you really know that you dont mix up continuous and discrete Fourier transforms ? For a discrete to discrete Fourier transform you have sampled the values of the 2Pi periodic function f with N points x[k]=2Pi*k, k=0,1,..,N-1 and f[k]=f[x[k]] and with the DFT you calculate a[j] with f[k]=Sum[a[j]*Exp[2Pi*I*j*k/N],{j,0,N-1}]/N Can yo tell me what you mean with the continuous derivative ? of the discrete f[k] ? This ist simply not defined because k can have only discrete values. You can use a discrete approximation to a derivative (f[i+1]-f[i-1])/2 and interprete this as a convolution test = Table[Sin[2Pi*x/20], {x, 0, 20, 20/511}];; fkernel = Fourier[ RotateLeft[ Drop[Table[ If[Abs[i] <= 1, -i, 0]/2, {i, -Length[test]/2, Length[test]/2}], -1], Length[test]/2] ]; dfftest = InverseFourier[Chop[fkernel*Fourier[test]]]; But is is up to you, to use a higher order approximation of the first derivative (f[i-2] - 8*f[i-1] + 8*f[i+1] - f[i+2])/12 Regards Jens Mike wrote: > > Hi > > I need to differentiate a function that i only know numerically and > for various reasons I have been asked to do this via a Fourier > Transform Method. Before doing it on the horrible function I am > dealing with, I thought I would get to grips with the method using > much easier functions. > > So say I want to differentiate > > E^(-x^2) > > w.r.t x using Fourier Transforms : analytically i could proceed as > follows > > FourierTransform[E^(-x^2), x, w]] = 1/(Sqrt[2]*E^(w^2/4)) > > multiply this by I*w and taking the inverse Transform yields > > (-2*x)/E^x^2 > > as expected so i am along the right lines here. Now I assume that I > only know this function numerically and see if i can reproduce this > result. First I made a table of values : > > test = Table[E^(-x^2), {x, 0.01, 20, 0.01}]; > > and find it's DFT using > > Fourier[test] > > now in order to find the derivative I need to multiply this by I*w and > take the inverse transform. My problem is how to do this? what are > my values of w? The DFT looks very different to the one I found > analytically and to be honest I don't have a clue of whats going on. > Any help would be appreciated - Thanks > > Mike
- Follow-Ups:
- Re: Re: Numerical Differentiation using Fourier Transform
- From: "Philippe Dumas" <dumasphi@noos.fr>
- Re: Re: Numerical Differentiation using Fourier Transform