r****y 发帖数: 1437 | 1 个人体会,也许对上面的那个问题有用。用过几次fft,发现一不小心还真爱出
错,估计是我水平太不照了。
1。 for real function f(x), ifft(fft(f(x))) != f(x), only
real(ifft(fft(f(x)))) = f(x), 计算中的round off errors很容易
产生很小的虚数项,~1e-14 to 1e-12.
1。 for f(x), ifft(fft(f(x)))= f(x), 这个没问题。但是要是你想通过
fft做微分,就得小心。比如用matlab, suppose你的数据是128个点,
y = fft(f, 128)
所得到的y还是128个值,前65个对应wavenumber 0, 1, 64, 后面的对应
-63, -62, ..., -1. 你要是以为后面的对应65, 66, 127,做微分的就会出错,
因为 d(exp(-ikx))/dx= -ik exp(-ikx), 这个k你就错了 |
|