快速傅里叶变换(FFT)学习笔记

定义

多项式

系数表示法

设\(A(x)\)表示一个\(n-1\)次多项式,则所有项的系数组成的\(n\)维向量\((a_0,a_1,a_2,\dots,a_{n-1})\)唯一确定了这个多项式。

\[A(x)=\sum \limits_{i=0}^{n-1}a_ix^i\]

\[=a_0+a_1x+a_2x^2+\dots+a_{n-1}x^{n-1}\]

点值表示法

将\(n\)个互不相同的\(x\)代入多项式,会得到\(n\)个互不相同的取值\(y\)。设他们组成的\(n\)维向量分别为\((x_0,x_1,x_2,\dots,x_{n-1}),(y_0,y_1,y_2,\dots,y_{n-1})\)。则给多项式被这两个\(n\)维向量唯一确定

其中

\[y_i=A(x_i)=\sum \limits_{j=0}^{n-1}a_j\times x_i^j\]

多项式乘法

定义两个多项式\(A(x)=\sum\limits_{i=0}^{n-1}a_ix^i\)与\(B(x)=\sum\limits_{i=0}^{n-1}b_ix^i\)相乘的结果为\(C(x)\)。

\(C(x)=A(x)\times B(x)=\sum\limits_{k=0}^{2n-2}(\sum \limits_{k=i+j} a_ib_j)x^k\)

形如\(C(k)=\sum \limits_{i\oplus j=k}a_ib_j\)的式子称为卷积,注意到,多项式乘法的本质就是加法卷积

两个\(n-1\)次多项式相乘,得到的是一个\(2n-2\)次多项式,时间复杂度为\(O(n^2)\)。

若取两个多项式在\(2n-1\)个点处的点值表示,则

\[{y_3}_i=(\sum\limits_{j=0}^{2n-2}a_jx_i^j)\times(\sum\limits_{j=0}^{2n-2}b_jx_i^j)={y_1}_i\times{y_2}_i\]

复数

设\(a,b\)为实数,\(i^2=-1\),形如\(a+bi\)的数叫做复数,其中\(i\)被称为虚数单位。复数域是已知最大的域。

复平面

在复平面中,\(x\)轴代表实数,\(y\)轴代表虚数。每一个复数对应复平面上一个从\((0,0)\)指向\((a,b)\)的向量。

向量的长度\(\sqrt{a^2+b^2}\)叫做模长。表示从\(x\)轴正半轴到该向量的转角的有向角叫做幅角

运算法则

记\(z_1=(a,b),z_2=(c,d)\)。

复数相加遵循平行四边形法则。\(z_1+z_2=(a+c,b+d)\)。

复数相乘时,模长相乘,幅角相加。\(z_1+z_2=(ac-bd,ad+bc)\)。

单位根

下文中,默认\(n\)为2的正整数次幂。

在复平面上以原点为圆心,\(1\)为半径作圆,所得的圆叫单位圆。以原点为起点,圆的的\(n\)等分点为终点,作\(n\)个向量,设幅角为正且最小的向量对应的复数为\(\omega_n\),则称\(\omega_n\)为\(n\)次单位根

由复数的乘法定义(模长相乘,幅角相加)可知,其余的\(n-1\)个向量对应的复数分别为\(\omega_n^2,\omega_n^3,\dots,\omega_n^n\),且易知\(\omega_n^0=\omega_n^n=1\)。

那么如何计算他们的值呢

快速傅里叶变换(FFT)学习笔记

参考资料

FFT 学习笔记 | Menci's Blog

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

[学习笔记&教程] 信号, 集合, 多项式, 以及各种卷积性变换 (FFT,NTT,FWT,FMT) - rvalue - 博客园

如何通俗地解释欧拉公式(e^πi+1=0)?

复数(数的概念扩展)_百度百科

上一篇:1.4 几何概率


下一篇:快速傅立叶变换(FFT)