FFT 深夜摸魚小筆記

2022-05-07 03:36:11 字數 928 閱讀 5811

本次筆記學習自演算法導論

fft核心:係數表示→(單位複數根)點值表示→(插值)係數表示

關於單位複數根

n次單位複數根\(ω\)為滿足\(ω^n=1\)的複數

n次單位複數根恰好有n個,表示為\(ω_k,k=0,1,...n-1\)

由尤拉公式\(e^=cosθ+isinθ\),得\(ω_k=e^\)

主n次單位根\(ω_n=e^\),其他n次單位複數根都是\(ω_n\)的冪次,表示為\(ω_n^k,k=0,1,...n-1\)

\(ω_n^n=ω_n^0\),\(ω_n^=ω_n^\)

消去引理:對於整數\(n≥0,k≥0,d>0\),\(ω_^=ω_n^k\)

推論:對於偶數\(n>0\),\(ω_n^=ω_2=-1\)

折半引理:偶數\(n>0\),\(n\)個\(ω_n^k\)的平方的集合 = \(n/2\)個\(ω_^k\) 的集合

簡略證明:\(ω_n^=ω_n^k*(-1)\),所以平方相等,\(ω_n^=ω_^k\),所以每個n次單位複數根的平方都能獲得2個n/2次單位複數根

求和引理:對於整數\(n≥1\)和不被\(n\)整除的\(k≥0\),\(\sum_^(ω_n^k)^j=0\)

假設\(n\)為2的冪

多項式\(a(x)=a^(x^2)+xa^(x^2)\)

\(a^(x)=a_0+a_2x+a_4x^2+...+a_x^\)

\(a^(x)=a_1+a_3x+a_5x^2+...+a_x^\)

\(a(x)\)的點值表示可以通過\(a^(x)\)和\(a^(x)\)來表示,既\((ω_n^0)^2,(ω_n^1)^2,...(ω_n^)^2\)來表示

由折半引理,上式僅由\(n/2\)個\(n/2\)次單位複數根$所組成,所以不斷遞迴子問題規模都會減半

(最近破事較多,後續部分有空再補上)

摸魚小幫手 Python的itertools模組

終止於最短輸入序列的迭代器 組合生成器 for i in itertools.count print i 01 234.for i in itertools.cycle 2,3,4,5 print i 23 4523 452.for i in itertools.repeat 雪碧 print i ...

FFT學習筆記

fft可用於解決一些卷積問題。一般問題形式如下 c a b c i ij 0a i b i j 若把a,b看成兩個次數為n多項式 a x ni 0 a i xi,b x ni 0b i x i 原問題等於兩個多項式相乘,c的次數等於2n 1 乙個次數界為n的多項式a的點值表達為n個點值對所組成的集合...

FFT學習筆記

今天doggu講了,開始覺得這玩意好強啊 後來自己看的時候發現蠻zz wys表示 贊同 所以很多自己覺得遙不可及,一輩子都不可能學會的東西只要慢慢理解,理解好了再把他化為自己的語言,歸到自己的世界裡 就覺得不是很難了,甚至很簡單.當然開始並不是,從 好難啊 到 這麼簡單困大爺我這麼久,之前腦子抽了z...