1、目录
2、多项式的两种表示法
1.系数表示法
我们最常用的多项式表示法就是系数表示法,一个次数界为 n n 的多项式 可以用一个向量 s=(s0,s1,s2,⋯,sn−1) s = ( s 0 , s 1 , s 2 , ⋯ , s n − 1 ) 系数表示如下:
系数表示法很适合做加法,可以在 O(n) O ( n ) 的时间复杂度内完成,表达式为:
当中
但是,系数表示法不适合做乘法,时间复杂度为 O(n2) O ( n 2 ) ,表达式为:
当中
这就是卷积的一般形式,记 s=a⊗b s = a ⊗ b ,我们要想办法加速这个过程。
2.点值表示法
顾名思义,点值就是多项式在一个点处的值。多项式 A(x) A ( x ) 的点值表达是一个集合:
使得对于 k=0,1,2,⋯,n−1 k = 0 , 1 , 2 , ⋯ , n − 1 有 xk x k 两两不相同且 yk=A(xk) y k = A ( x k ) 。
n n 个点可以确定唯一一个 次多项式。
点值表达有很多优良的性质,加法和乘法都可以在 O(n) O ( n ) 的时间复杂度内完成。
现有 A(x) A ( x ) 的点值表达
则 C(x)=A(x)+B(x) C ( x ) = A ( x ) + B ( x ) 的点值表达为:
C(x)=A(x)B(x) C ( x ) = A ( x ) B ( x ) 的点值表达为:
可见,点值表示可以帮助我们更快地进行卷积,可是如何在系数表示法和点值表示法之间相互转化呢?
3、复数
当 x x 为实数时,无法很好地对转换方法进行优化。为了优化计算 所浪费的时间,我们需要 x x 有循环的性质。但点值表示法需要 个两两不同的值,而在实数域中只有 1 1 和 ,因此,我们需要复数的帮助。
1.复数、复平面的定义
我们把形如 a+bi a + b i 的数称为复数 z z ,其中 为实部(Real),记为 Rz ℜ z ; b b 为虚部(Imaginary),记为 。
每一点都对应唯一复数的平面叫复平面,相当于一个把 Rz ℜ z 作为横坐标,把 Iz ℑ z 作为纵坐标的笛卡尔坐标系。如图:
模长:复平面上原点到复数 z z 的距离,记为 。根据勾股定理, |z|=|a+bi|=a2+b2−−−−−−√ | z | = | a + b i | = a 2 + b 2
辐角:复平面上 x x 轴与复数 所对应向量之间的夹角,在 (−π2,π2) ( − π 2 , π 2 ) 之间的记为辐角主值 argz arg z 。
2.欧拉公式
大名鼎鼎的欧拉公式:
根据三角函数在单位圆上的几何意义,公式是容易理解的。
几何意义:
当中 θ θ 为角度, t t 为弧长。
则根据欧拉公式,可将一个复数表示为一个二元组 ,即模长和辐角(相当于复平面上极坐标系的表示方法)。值为: a(cosθ+isinθ) a ( cos θ + i sin θ )
特殊情况:欧拉恒等式 eiπ+1=0 e i π + 1 = 0
3.复数的运算
(1)复数加法
运算规则:实部、虚部分别相加
几何意义:如图
结果相当于两个向量所构成的平行四边形的对角线。如果把一个复数所对应的向量视为一个移动的变换,那么向量加法就是连续运用这两个变换相当于的新变换。
(2)复数乘法
运算规则:展开
几何意义:如图
如图, arga+argb=arga×b arg a + arg b = arg a × b , |a|×|b|=|a×b| | a | × | b | = | a × b |
总结就是:模长相乘,辐角相加。
因此,如果模长为 1 1 ,那么它的 次方一定还在单位圆上。
证明:
根据欧拉公式,已知 x=(a1,θ1)=a1(cosθ1+isinθ1),y=(a2,θ2)=a2(cosθ2+isinθ2) x = ( a 1 , θ 1 ) = a 1 ( cos θ 1 + i sin θ 1 ) , y = ( a 2 , θ 2 ) = a 2 ( cos θ 2 + i sin θ 2 )
则
∴|x×y|=|x|×|y|,arg(x×y)=argx+argy ∴ | x × y | = | x | × | y | , arg ( x × y ) = arg x + arg y
证毕。
4.单位复数根
(1)基本性质
单位复数根是方程 ωn=1 ω n = 1 的解,第 k k 个解记为 (这里的 k k 事实上是乘方的含义)
的解在复平面上的位置如下:
可以看到, n n 个解把单位圆分成了
等弧,交点即为根。而且, ωkn ω n k 实际上是 ωn ω n 的 n n 次方,模长仍为
,辐角翻倍!
为什么呢?
∵|xn|=|x|n,argxn=nargx ∵ | x n | = | x | n , arg x n = n arg x
∴|ω|n=|ωn|,argωn=nargω ∴ | ω | n = | ω n | , arg ω n = n arg ω
∴|ω|n=1(|ω|∈R+),argω=360∘n ∴ | ω | n = 1 ( | ω | ∈ R + ) , arg ω = 360 ∘ n
∴|ω|=1,argω=360∘n ∴ | ω | = 1 , arg ω = 360 ∘ n
这就很明显了。
所以, ωkn ω n k 事实上表示的是 ωn ω n 的 k k 次幂。为什么选择单位复数根呢?因为它有循环的优良性质,即 。由于其他的都可以由 ω1n ω n 1 得到,因此称为主 n n 次单位根,又记为 。
根据单位复数根的平分圆的意义和欧拉公式, ωkn=e2πikn=cos2πkn+isin2πkn ω n k = e 2 π i k n = cos 2 π k n + i sin 2 π k n 。
(2)计算引理
显然,由于单位复数根循环( ωznn=e2πiz=[(eπi)2]z=1z=1 ω n z n = e 2 π i z = [ ( e π i ) 2 ] z = 1 z = 1 ),有变换恒等式:
每一份再分成 k k 份,编号也变成 倍,位置自然不变( ωdkdn=e2πidkdn=e2πikn=ωkn ω d n d k = e 2 π i d k d n = e 2 π i k n = ω n k ),所以有消去引理: