快速傅里叶变化(FFT)含模板

Posted 皓洲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速傅里叶变化(FFT)含模板相关的知识,希望对你有一定的参考价值。

快速傅里叶变化(FFT)含模板

快速傅里叶变化(FFT)

资料来源:https://www.bilibili.com/video/BV1Y7411W73U

前置知识索引

FFT的核心算法是基于复数和单位根的,并且在算法竞赛中FFT的最普遍应用是求i多项式乘法,或者是卷积。

复数 Complex Number


定 义 : z = a + b i 其 中 a , b ∈ R , i = n 加 法 法 则 : ( a + b i ) + ( c + d i ) = ( a + c ) + ( b + d ) i 乘 法 法 则 : ( a + b i ) ( c + d i ) = ( a c − b d ) + ( a d + b c ) i 欧 拉 定 理 : e i θ = cos ⁡ θ + i sin ⁡ θ 定义:z = a + bi 其中 a,b∈R ,i =\\sqrtn\\\\ 加法法则:(a+bi)+(c+di) = (a+c)+(b+d)i\\\\ 乘法法则:(a+bi)(c+di) = (ac-bd)+(ad+bc)i\\\\ 欧拉定理:e^iθ = \\cosθ+i\\sinθ z=a+bia,bRi=n (a+bi)+(c+di)=(a+c)+(b+d)ia+bi)(c+di)=(acbd)+(ad+bc)ieiθ=cosθ+isinθ

复数的几何意义

单位根

快速傅里叶变换的核心是用单位根的某些独特性质来快速实现的

我们知道每个复数都可以表示为:
z = r ∗ e i θ z = r*e^iθ\\\\ z=reiθ

所以两复数相乘可以表示为
z 2 = r 2 ∗ e ( 2 θ ) i z^2 = r^2*e^(2θ)i z2=r2e(2θ)i

每个单位根都可以看成如下公式单位根的幂
ω n = e i 2 π n ω_n = e^i\\frac2\\pin ωn=ein2π

单位根-三个引理

  • lemma.1 消去引理:

ω d k d n = ω k n ω n n 2 = ω 2 = − 1 ω_dk^dn = ω_k^n\\\\ ω^\\fracn2_n = ω_2 = -1\\\\ ωdkdn=ωknωn2n=ω2=1

证明:
ω d k d n = ( e 2 π d n i ) d k = ( e 2 π n i ) k = ω k n ω_dk^dn=(e^\\frac2\\pidni)^dk = (e^\\frac2\\pini)^k = ω_k^n ωdkdn=(edn2πi)dk=(en2πi)k=ωkn

  • lemma.2 折半引理:

( ω n k + n 2 ) 2 = ( ω k n ) 2 = ω n 2 k (ω^k+\\fracn2_n)^2 = (ω_k^n)^2 = ω_\\fracn2^k\\\\ (ωnk+2n)2=(ωkn)2=ω2nk

证明:
ω n k + n 2 = ω n k ω n n 2 = − ω n k ( ω n k ) 2 = ω n 2 k = ω n 2 k ω n k + n 2 = ω n k ω n n 2 = − ω n k ( ω n k ) 2 = ω n 2 k = ω n 2 k ω^k+\\fracn2_n = ω_n^kω_n^\\fracn2 =- ω_n^k\\\\ (ω^k_n)^2 = ω_n^2k = ω_\\fracn2^k\\\\ω^k+\\fracn2_n = ω_n^kω_n^\\fracn2 =- ω_n^k\\\\ (ω^k_n)^2 = ω_n^2k = ω_\\fracn2^k\\\\ ωnk+2n=ωnkωn2n=ωnk(ωnk)2=ωn2k=ω2nkωnk+2n=以上是关于快速傅里叶变化(FFT)含模板的主要内容,如果未能解决你的问题,请参考以下文章

FFT(快速傅里叶变换)

P1919 模板A*B Problem升级版(FFT快速傅里叶)

数字信号处理3: 快速傅里叶变换(FFT)(含代码)

数字信号处理3: 快速傅里叶变换(FFT)(含代码)

快速傅里叶变换(FFT)详解

[算法模板]FFT-快速傅里叶变换