基本知识
正交(Orthogonality)是线性代数的概念,是垂直这一直观概念的推广。作为一个形容词,只有在一个确定的内积空间中才有意义。若内积空间中两向量的内积为0,则称它们是正交的。如果能够定义向量间的夹角,则正交可以直观的理解为垂直。
单位根
快速傅里叶变换的核心就是利用的单位根的一些独特的性质来快速实现的
单位根的定义:方程 zn=1 在复数范围内的 n 个根。
那么,不经过证明的给出,每一个根应该为 enj2πk。
这里我们记 ωn 为主 n 次单位根, ωnk=enj2πk
举个例子,主 8 次单位根的 8 个值改写为形如 (r,θ) 的极坐标后,位置类似于下图:
三个引理
这个引理是快速傅里叶变化的核心
- 求和引理:∑i=0n−1(ωnk)i=0
多项式
一元多项式一般形式:F(x)=a0+a1x+a2x2+⋯+anxn=∑i=0naixi
定义两个多项式如下:
A(x)=i=0∑naixi,B(x)=i=0∑nbixi
一般情况下,我们可以通过补零的方式,将两个次数不同的多项式调整到次数相同。这里我们都补充到 n 的长度
ci=j=0∑iajbi−j,A(x)B(x)=i=0∑2ncixi
我们称这个系数向量 c 为向量 a,b 的卷积,记作 a⊗b
表示方法
-
系数表示
它将一个多项式表示成由其系数构成的向量的形式,如A=[a0,a1,a2,…,an]T
加法的时间复杂度为 O(n)
乘法则做向量卷积,一般来说,时间复杂度为 O(n2)
-
点值表示
用至少 n 个多项式上的点来表示,一般形式如 {(x0,A(x0)),(x1,A(x1),…,(xn,A(xn))}
进行运算是,一般要保证两个多项式在同一位置取值相同,即 xi 相同
加法运算直接将两点坐标相加即可,时间复杂度为 O(n)
乘法运算只需要将两 点纵坐标相乘即可,时间复杂度为 O(n)
如果我们需要 A(x) ,这个过程叫做插值,可以通过拉格朗日插值公式进行计算,复杂度为 O(n2).
DFT(角度一)
变换操作是对于一个向量而言(也就是多项式的系数表示法),相当于求出这个多项式在 x 为单位根时的取值
定义:
C=[c0,c1,c2,…,cn−1]T,h(x)=i=0∑n−1cixi
令x=ω代入后得[ h(ω0),h(ω1),h(ω2),…,h(ωn−1) ]T,两个多项式的乘积的可用点值表示,DFT 实际上所做的事情是插值
范德蒙德矩阵为