# Recreating functions after passing through Fourier Transform & IFT

GROUPS:
 I have a complex function that I will need to manipulate in the future and wanted to verify Mathematica's FourierTransform functions.  Consider the following:I have a function that is causal in time (t=0) and causal in space (for x=0.5).  For simplicity, assume it is a traveling wave that decays exponentially as a function of space:f =2*Sin[40*(x -0.1*t)]*Exp[5*(0.5 - x)]*UnitStep[t]*UnitStep[x - 0.5]If I were to take the fourier transform (FourierTransform) of this function, and then immediately take the inverse transform (InverseFourierTransform):F = FourierTransform[f, t, Omega]finv = InverseFourierTransform[F, Omega, t]I would expect Mathematica to return to me the original function.  However, I get an output that is not causal in time as such (left is the input, right is the input and output; x=0.5 or t=2.5):As a workaround, I attempted to isolate the real portion of the Fourier Transform and use the evenness of the output to recreate my desired finv, but Mathematica wouldn't let me take the InverseFT as Re[] was not acting on a numeric quantity.Has anyone seen this before?  Can you provide me with direction?EK
4 years ago
6 Replies
 Hi,looks like it works well for simple functions:f = Sin[x]FourierTransform[%, x, y]InverseFourierTransform[%, y, x] // ExpToTrig // TrigReduceThe problem appears to be with UnitStep (or HeavisideTheta) function:f = UnitStep[x]FourierTransform[%, x, y]InverseFourierTransform[%, y, x] Try to investigate why HeavisideTheta[] is not equal to InverseFourierTransform[FourierTransform[HeavisideTheta[]]] in 'functional' form.In fact, the values are indeed equal, i.e. HeavisideTheta(x) = InverseFourierTransform[FourierTransform[HeavisideTheta(x)]]f = HeavisideTheta[x]FourierTransform[%, x, y]InverseFourierTransform[%, y, x] f /. x -> 1%% /. x -> 1I.M.
4 years ago
 The problem appears when a sinusoid is multiplied by the unit step function: g = Sin[5*tt]*UnitStep[tt];(*Continuous function*) G = FourierTransform[g, tt, omega](*FT of function*) ginv = InverseFourierTransform[G, omega, tt]// ExpToTrig // TrigReduce(*IFT of function*)  (*or*)  g = Cos[5*tt]*UnitStep[tt];(*Continuous function*) G = FourierTransform[g, tt, omega](*FT of function*) ginv = InverseFourierTransform[G, omega, tt] // ExpToTrig // TrigReduce(*IFT of function*)For both cases g =/ ginv.  The result is actually 0.5*Sign*Sin[5*tt] or 0.5*Sign*Cos[5*tt], respectively.
4 years ago
 g = Sin[5*tt]*UnitStep[tt];(*Continuous function*)G = FourierTransform[g, tt, omega](*FT of function*);ginv = InverseFourierTransform[G, omega, tt](*IFT of function*) // ExpToTrig // TrigReduce;Plot[{g, ginv}, {tt, -2 \[Pi], 2 \[Pi]}]g is indeed equal to ginv, moreover UnitStep[ X] = 1/2 + 1/2 SignPlot[{UnitStep[t], 1/2 + 1/2 Sign[t]}, {t, -2, 2}]I.M.