很明显,不同的 FFT 算法(例如 Numpy.fft 与 FFTS)产生的结果略有不同。我看到程序之间的偏差在 0.005 到 0.01 左右。
我想,造成这些的原因在于计算机算术,但是有没有简单的方法可以找出造成差异的原因?或者说,哪种算法更精确?
很明显,不同的 FFT 算法(例如 Numpy.fft 与 FFTS)产生的结果略有不同。我看到程序之间的偏差在 0.005 到 0.01 左右。
我想,造成这些的原因在于计算机算术,但是有没有简单的方法可以找出造成差异的原因?或者说,哪种算法更精确?
我不想给出一个微不足道的答案,因为“这取决于应用程序”,但它确实取决于应用程序!
考虑到 FFT 计算在许多应用中并不是唯一的误差源,允许一些可接受的偏差是合理的,但通常会受到整个系统所需精度的限制。
另一方面,可以在诸如 IEEE 浮点硬件(或软模拟)单元上定义非常严格的精度界限,以便指定的一组计算不会产生大于非常小的 epsilon 值的误差。
我不知道这样的一组标准化限制是否专门用于 FFT 或类似算法。如果您发现理想 DFT 值与相应的快速算法不匹配,您必须自行决定是否应允许此错误以支持其他一些收益。