I determined a distribution dist = SmoothKernelDistribution[ListOfValues];
.
Then I determined the FT of the PDF, which is the CharacteristicFunction
.
For testing purposes I want to show, that the InverseFourierTransform
will give me back the PDF. But the InverseFourierTransform
is very slow.
Convince yourself. ListOfValues
ist just a bunch of zeros:
{0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0.}
For some reason the execution
cf1[w_] = CharacteristicFunction[dist, w];
Plot[{10*Norm[cf1[w]], Arg[cf1[w]]}, {w, 0.001, 2}]
That thing should be constant. Maybe it's just an issue with SmoothKernelDist.
Anyway, the expression InverseFourierTransform[cf1[w], w, t]
takes so long, that I cant even tell if it would ever give a useful result.
How can I perform the InverseFT? My goal is to find the inverse of a convolution, for example: 'a' convolved with 'b' gives 'c'. Given 'a' and 'c', I want to find 'b'. Doing this in Fourierspace should theoretically be , at least symbolically easier?
EDIT:
As a compromise, instead of InverseFourierTransform
I could used something like
tf[t_] :=
Sqrt[1/(2 \[Pi])]
NIntegrate[cf1[\[Omega]] *Exp[-I*\[Omega]*t], {\[Omega], 0, 2}];
and then do a pointwise evaluation. That would lead to:
ListPlot[Table[Norm[tf[t]], {t, 10, 11, 0.1}]]
and the actual pdf should look like this:
Plot[PDF[dist[1], x], {x, 10, 11}]
Not only that they don't match. I also had to take the Norm because otherwise the numerical one would be complexvalued.