我整天都在搜索sinc(x)
之间-pi and pi
的反函数,但找不到任何东西:
有人知道从给定sinc
值获取角度值的方法吗?如果它变得更容易,我只对-pi and pi
之间的区域感兴趣
提前感谢您的帮助。
答案 0 :(得分:6)
一般情况下,即使限制在 sinc 为bijective的小间隔(我不认为您的要求如此),it has no simple inverse。
也许您可以执行以下操作之一:
您可以计算反向"在线"使用 abs(sinc(x) - y)的最小化(参见,例如,Numerical Recipes in C。请注意,由于它是一个平滑的函数,你很幸运,所以你可以使用衍生物。
创建"离线"查找所需范围内各种值的查找表,并给出" online"查询,在两个预先计算的结果之间进行插值。
答案 1 :(得分:1)
Newton's Method可用作近似sinc function的反转的方法。如果我们让f(x) = sin(x)/x
,然后f'(x) = cos(x)/x-sin(x)/x^2
使用牛顿方法,我们可以通过
f
的零
x(n+1) = x(n) - f(x(n)) / f'(x(n))
根据我们的开始,只要我们没有遇到f'(x(n)) = 0
我们应该找到解决方案的值。
如果我们将f
限制在x∈(0,π]
的单个分支,那么f(x)∈[0,1)
是双射的,牛顿的方法可能对查找给定{x0∈(0,π]
有用{1}} y0∈[0,1)
。我们可以通过找到y0=f(x0)
的位置来做到这一点。在这种情况下g(x0)=f(x0)-y0=0
g'(x) = f'(x)
,因为y0
的导数是0.所以我们留下了迭代:
x(n+1) = x(n) - [f(x(n)) - y0] / f'(x(n))
然后,诀窍是选择合适的x(0)
来启动该过程。可能有很多选择,但x(0)=π
可能就足够了。
有一点需要注意的是,你需要防范f'(x(n))=0
的可能性。应检查此条件,如果遇到此情况,则应选择不同的x(0)
并重新开始该过程。