1

我有一个数组 y[x], x=0,1,2,...,10^6,用 y(10^6)=y(0) 描述周期信号,我想计算它的导数 dy/ dx 用一个快速的方法。

我尝试了光谱差分法,即

dy/dx = inverse_fourier_transform ( i*kfourier_transform(y)[k] ) ....(1)

并且结果与 (y[x+1]-y[x-1])/2 不同,即由有限差分法建议。

两者哪个更准确,哪个更快?还有其他类似的方法吗?

以下是理解结果差异的努力:

如果将 (1) 中的fourier_transform 和inverse_fourier_transform 的总和展开,则可以将dy/dx 表示为y[x] 与系数a[x] 的线性组合。我计算了这些系数,它们似乎是 1/n(当数组的长度变为无穷大时),n 是到检查导数的距离。与仅使用两个相邻点的有限差分方法相比,光谱差异是高度非局部的……我对这个结果是否正确,如果是,如何理解?

4

1 回答 1

2

如果您对高于奈奎斯特频率的信号进行采样,则傅立叶方法会给您一个准确的答案,因为您的数据完全描述了信号(假设没有噪声)。

有限差分法是一阶近似,因此并不精确。但是,如果您绘制两者,它们应该显示相同的基本趋势。如果它们看起来完全不同,那么您可能在某处有错误。

然而,一个快速的 ft 是 O(nlog(n)) 而有限差分是 O(n) 所以后者更快(但不是快到应该自动首选)。

傅立叶方法是非局部的,因为它准确地构建了整个信号(因此使用了所有波长)。

于 2012-04-18T21:53:59.160 回答