fft,快速傅利葉變換,用於快速求多項式。首先,我們知道任何乙個任何乙個週期函式都可以表示成為傅利葉級數的形式。通過對應關係我們可以求出週期函式係數或者傅利葉級數的係數。
建議具體過程看復變函式或者高數。
fft過程:
兩個次數界為n的多項式a(x)和b(x)相乘,輸入輸出均採用係數表示法。(假定n為2的冪)
1)使次數界增加一倍:a(x)和b(x)擴充為次數界為2n的多項式,並構造起係數表示。
2)求值:兩次應用2n階fft,計算出a(x)和b(x)的長度為2n的點值表示。
3)點乘:計算多項式
4)插值:對2n個點值對應用一次fft計算出其逆dft,就可以構造出多項式c(x)的係數表示。
第1步和第3步需要時間為o(n),第2步和第4步運用fft需要時間為o(nlogn)。
const double pi = acos(-1.0);
struct complex
complex operator-(const complex &b) const
complex operator+(const complex &b) const
complex operator*(const complex &b) const
};/*
* 進行 fft 和 ifft 前的反轉變換。
* 位置 i 和 (i 二進位制反轉後位置)互換
* len 必須去 2 的冪
*/void change(complex y, int len)
if (j < k) j += k;
}}/*
* 做 fft
* len 必須為 2^k 形式,
* on==1 時是 dft,on==-1 時是 idft
*/void fft(complex y, int len, int on) }}
if (on == -1)
for (int i = 0; i < len; i++) y[i].x /= len;
}void conv(complex a,complex b,int len) //求卷積
Java實訓報告
時間過得真快,轉眼間為期一周的實訓已經結束。經過這一周的實訓練習讓我們學到了許多知識,回頭想想實訓這幾天我們確實是有很大收穫的。一周,看似很簡短的時間,實際上按小時計算120小時卻是個不小的數字,也許有些牽強。但是簡短的時間仍是有效的,因為在這一周中我們學到了很多東西,這一周我們在學習的同時,也進一...
建模實訓報告總結 建築模型製作實訓報告總結
一 實踐目的 本次實踐是建築學專業的綜合性實踐教學環節,旨在培我們的實際動手能力。其主要任務是使我們理解模型製作在作品設計中的重要性,掌握模型製作的基本工具 方法和過程,鍛鍊我們的動手實踐能力,完善我們的設計知識和設計實踐能力。建築模型製作 是我們從圖紙到實體之間的橋梁,它具有綜合性強 涉及面廣和實...
Android實訓專案報告
2019.7.4 實訓第四天 實驗目標 本次實訓,主要目標是完善第三天的輪播圖,使輪播圖可以自動輪播 實驗步驟 在包adapter下建立類home vp,首先,在這個類下建立四個抽象方法,getcount isviewfromobject destroyitem instantiateitem 由於...