快速傅利葉變換初步

2021-06-26 04:13:59 字數 1659 閱讀 1171

快速傅利葉變換。。乙個曾經遙不可及的東西。。

昨天晚上心血來潮看了乙個小時,今天早上正好又沒有聯考。。把這道題實現了一下

首先普及一下快速傅利葉變換的知識。。看了以後,這道題真的是好裸的模板題啊。。

首先,對於乙個多項式a(x),我們帶入乙個x0,得到乙個a(x0)=y0,那麼(x0,y0)就是乙個點值。

由算導上的證明:乙個次數為n的多項式係數可以被對應的n個點值表示式確定。

點值表示有乙個優勢,其乘法效率為線性!!

係數表示式轉點值表示式,也就是傳說中的dft。如果隨便取值並計算,連變換都要n^2的效率,談何優越。

根據這n個點值只要彼此不同就可以。我們不妨找到某種特殊的帶入值,讓我們可以從a(x)得出的值推出其他和a(x)有關的點值。

這時候單位複數根wn派上用場了。我們設wn=cos(2π/n)+sin(sπ/n) i,它是乙個複數。且wn^n=1

它有乙個美妙的性質。|wn^(k+n/2)|=|wn^k|,證明也不難,(wn^(k+n/2))^2=wn^(2k+n)=wn^2k*wn^n=wn^2k=(wn^k)^2

這個引理稱為折半引理。事實上這個引理是n^2到nlogn的乙個關鍵。

wn^(k+n/2)既然有這麼美妙的性質,a(wn^(k+n/2))和a(wn^k)是不是也存在某種關係呢?

答案是肯定的。

對於a(x)=a0+a1x+a2x^2+a3x^3...+an-1x^(n-1)

我們把其分成兩個部分

a[0](x)=a0+a2x+a4x^2+...+an-2x(n/2 -1)

a[1](x)=a1+a3x+a5x^2+...+an-1x(n/2 -1)

於是有a(x)=a[0](x^2)+xa[1](x^2)

於是我們的問題變成了求a[0]和a[1]在

(wn^0)^2  (wn^1)^2  ...  (wn^(n-1))^2

的取值於是折半引理派上用場了。

a[0]((wn^(k+n/2))^2)=a[0]((wn^k)^2)

a[1]((wn^(k+n/2))^2)=a[1]((wn^k)^2)

事實上由復平面的性質,我們發現wn^(k+n/2)=-wn^k;

那麼a(

wn^(k+n/2)

)=a[0]((wn^k)^2)-wn^ka[1]((wn^k)^2) a(

wn^k

)=a[0]((wn^k)^2)+wn^ka[1]((wn^k)^2)

假設我們對於這一層暴力計算,那麼o(n)之後

我們好像一下子得到了a(wn^(k+n/2))和a(wn^k)兩個值。

但是我們顯然不會暴力計算,對於a[0]和a[1]存在和a一樣的形式,繼續遞迴!

每一次求值都可以將問題折半化,那麼n變成logn也就不是夢了

點值形式的解求好了,要變換回去的呀,於是逆dft登場。

不難發現這不過就是矩陣求逆的問題。詳見算導p535矩陣圖。

aj=1/n sigma(yk*wn^(-kj))

再看看我們做dft時的式子

a(wn^k)=sigma(aj*wn^kj)

我們完全可以把上下兩式當做同一型別的變換!

所以事實上只要對函式稍作修改,就可以實現dft和逆dft兩種操作了。

講到這裡。其實遞迴版已經可以實現了,但是慢!怎麼辦?

在之後的zjoi2014的力作為例題會詳細講解。

傅利葉變換與快速傅利葉變換

作為電子資訊專業的學生老說,這個不知道,或者理解不清楚,是十分不應該的,作為乙個學渣,有時候確實是理解不清楚的 1 首先離散傅利葉變換目的 簡單點說 就是將乙個訊號從時域變換到頻域 標準點說 將以時間為自變數的訊號 與 頻率為自變數的頻譜函式之間的某種關係變換 數學描述 對於 n點序列 其中自然對數...

快速傅利葉變換

學習快速傅利葉變化是量子計算中的基礎,查了很多資料,以下鏈結可以作為參考 本部落格部分知識學習於 最後這個裡面有解釋蝴蝶效應是怎麼來的!實用數字訊號處理 dft 離散傅利葉變換 o n2 計算多項式乘法 fft 快速傅利葉變換 o n log n 計算多項式乘法 fntt ntt 快速傅利葉變換的優...

快速傅利葉變換

傅利葉變換 fft fast fourier transformation 是離散傅氏變換 dft 的快速演算法。即為快速傅氏變換。它是根據離散傅氏變換的奇 偶 虛 實等特性,對離散傅利葉變換的演算法進行改進獲得的。採用這種演算法能使計算機計算離散傅利葉變換所需要的乘法次數大為減少,特別是被變換的抽...