FFT 中的 0 Hz(非常尖锐)峰值并除以 0

计算科学 正则 傅立叶分析 傅里叶变换
2021-12-03 12:14:18

在上一个问题link中,我询问了如何最有效地对给定特定值且我们知道其渐近行为的径向函数进行傅里叶变换。傅里叶变换读数

4πq0drrsin(qr)f(r).
我尝试了几种方法并最终选择了 FFT,它通过计算区间上的 DFT 来近似它[0,Δr]N点。(我更特别地使用了 NAG 子程序C06FAF

我仍然有一些问题q=0. 确实,从图中可以看出这张照片,我在非常低的频率处有一些奇怪的峰值。平坦的黑色曲线是q=0解析结果,而其他曲线是 FFT 计算随着增加Δr. (Δr>Δr>Δr>Δr虚线是最高的Δr)。可以看出,当这个峰变窄时Δr变大。

问题是这个高峰是从哪里来的?我怎么能摆脱它?我已经尝试取函数的平均值并将其减去到函数中,但它并没有改变任何东西。

下面还有一个附属问题:子程序计算积分。然后我必须除以q得到这个4π/q因素。虽然,在q=0,由于明显的原因,这不能完成。那么,可以做些什么呢?

编辑:宽峰的问题仅仅是因为我在q和例行程序的频率。至于划分的问题q=0很担心,我对Endulum他的回答很满意。

1个回答

我需要有关您尝试的其他信息(例如,示例代码)来帮助您解决第一个问题,但这是我对除零问题的输入。

首先,你真的需要除以q? 在出现这些转换的问题中,您通常可以避免使用rf(r)qf^(q)在他们自己的权利。决定是否可以推迟除以q直到后来的问题。

在你真正需要的时候q=0,您可以使用以下事实

limq0sin(qr)qr=1
对于任何有限因此你有 假设上表现良好r
f^(0)limq04π0Rdr sin(qr)qrr2f(r)=4π0Rdr r2f(r)
r2f(r)[0,R]