快速傅立葉轉換與譜方法

譜微分(spectral differentiation)

數值上求導數通常意味著相減鄰近值再除以一個小步長——有限差分——它只有中等精度,且隨步長縮小而變得吵雜。譜微分做得更聰明:它把函數轉換成其頻率分量,在那裡微分變成不過是乘法,而對平滑週期函數,這給出精度驚人的導數。

關鍵事實是微分如何作用在單一波上。e^(i*k*x) 的導數是 i*k*e^(i*k*x)——同一個波,只是乘了 i*k。所以在物理空間中微分一個函數,等價於在頻率空間中把它的每個傅立葉係數乘上 i*k。因此配方是:對取樣的函數做 FFT 得到其係數,把頻率 k 處的係數乘上 i*k,再做反 FFT 回來。三個快速運算取代了整套差分公式的機器,而對平滑、週期的函數,精度不只是高——它是「譜」的,意味誤差衰減得比格距的任何固定冪都快(常是指數型),所以把點數加倍可使精度平方,而非只把誤差減半。二階與更高階導數只需乘上 (i*k)^2、(i*k)^3 等等。

譜微分是微分方程譜方法內部的引擎,其取捨看得清清楚楚。它的指數精度「只有」對平滑函數成立;一個不連續或尖角會觸發吉布斯現象——跳變附近持續的振盪——精度便崩到一階,不比粗糙的差分好。樸素的傅立葉版本也要求函數「週期」;對區間上的非週期問題,你改用切比雪夫基底(用餘弦轉換),它在不需週期性的情況下給出相同的譜精度。然而在平滑、行為良好的函數這個範圍內,沒有通用方法能每格點算出更精確的導數。

在 16 點的週期格上微分 sin(x)。FFT 產生集中在 k = +/-1 的係數;乘上 i*k 便在捨入之內精確地把 sin(x) 變成 cos(x)。同樣 16 點上的二階有限差分會帶有 h^2 級的可見誤差;譜結果則正確到幾乎機器精度。

把每個傅立葉係數乘上 i*k——這就是導數,且具譜精度。

譜精度只是對「平滑」的獎賞:單一個不連續就會釋放吉布斯現象、把階數降到一階,並在跳變附近產生振鈴。而樸素的傅立葉形式要求函數週期——非週期區間請用切比雪夫。

又称
Fourier differentiationdifferentiation in frequency space傅立葉微分頻域微分