I've searching the whole day to calculate the inverse function of sinc(x)
between -pi and pi
, but couldn't find anything:
Does anybody know a way to get the angle value from the a given sinc
value ? If it make easier I'm only interested in the area between -pi and pi
Thanks in advance for any help.
The Fourier transform of the sinc function is a rectangle centered on ω = 0. This gives sinc(x) a special place in the realm of signal processing, because a rectangular shape in the frequency domain is the idealized “brick-wall” filter response.
The integral of a function is the value of its Fourier transform at zero, so sinc integrates to π. [ 1] By Plancherel's theorem, the integral of sinc2(x) is the integral of its Fourier transform squared, which equals π. [There are several conventions for defining the Fourier transform.
In general, even if restricted to small intervals where sinc is bijective (which I don't think is the case for your requirements), it has no simple inverse.
Perhaps you could do one of the following:
You could calculate the inverse "online" using the minimization of of abs(sinc(x) - y) (see, e.g., Numerical Recipes in C. Note that you're in luck as it's a smooth function, and so you can use the derivatives.
Create "offline" a lookup table for various values in the required range, and given an "online" query, interpolate between two pre-calculated results.
Newton's Method for finding zeros may be serve as a means to approximate inverses for the sinc function. If we let f(x) = sin(x)/x
, then f'(x) = cos(x)/x-sin(x)/x^2
Using Newton's method, we can approximate a zero for f
by
x(n+1) = x(n) - f(x(n)) / f'(x(n))
Depending where we start and as long as we don't come across values where f'(x(n)) = 0
we should find a solution.
If we restrict f
to a single branch where x∈(0,π]
then f(x)∈[0,1)
is bijective and Newton's Method may be useful to finding x0∈(0,π]
for a given y0∈[0,1)
such that y0=f(x0)
. We can do this by finding where g(x0)=f(x0)-y0=0
. In this case g'(x) = f'(x)
since the derivative of y0
is 0. and so we're left with iterating:
x(n+1) = x(n) - [f(x(n)) - y0] / f'(x(n))
The trick then is to choose a suitable x(0)
to start the process. There are likely a number of possible choices, but x(0)=π
is probably adequate.
One caveat to this is you will need to guard against the possibility of f'(x(n))=0
. This condition should be checked and if it is encountered, a different x(0)
should be chosen and the process started again.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With