多项式乘法(FFT)详解

本文深入探讨了快速傅里叶变换(FFT)在信息学中用于多项式乘法的方法。介绍了从系数表示法到点值表示法的转换,以及利用复数和单位根的性质优化计算。通过递归和非递归(迭代)的方式详细解释了FFT的实现过程,最后提出了解决常数巨大的迭代解决方案。
摘要由CSDN通过智能技术生成

本文只探讨多项式乘法(FFT)在信息学中的应用
如有错误或不明欢迎指出或提问,在此不胜感激

多项式
1. 系数表示法
一般应用最广泛的表示方式
用A(x)表示一个x-1次多项式,a[i]为 xi x i 的系数,则A(x)= n10 ∑ 0 n − 1 a[i] * xi x i
仅利用这种方式求多项式乘法复杂度为O( n2 n 2 ),不够优秀
2.点值表示法
将n个互不相同的值 x0 x 0 xn1 x n − 1 带入多项式,可以得到
对于一个n-1次多项式,可以被n个点所唯一对应.
因而对于A(x)*B(x),只需要得知A的2n个点值和对应B的2n个点值即可O(n)求出多项式的乘积
然而得知这些点值的复杂度依然在平方级别,达不到要求
考虑优化
先引一些要用到的名词

复数
复数即为表示成a+bi的数,其中i为-1的平方根
表示:
可以通过平面直角坐标系上的一条向量(0,0)到(x,y)表示x+yi
其中x轴为实数轴,y轴为虚数轴
运算:
复数运算符合四则运算,即:
(a+bi) + (c+di) = (a+c) + (b+d)i;
(a+bi) * (c+di) = ac + adi + bci - bd i2 i 2 =(ac - bd) + (bc + ad)i
几何意义:
定义模长为向量长度,幅角为从x轴正半轴逆时针转动到向量的角
复数相加等同于向量加法
复数相乘,模长相乘,幅角相加
//建议complex类手写,速度优于STL

单位根
以下默认n为 2x 2 x 且x为非负整数
在复数平面,以原点为圆心,以1为半径作圆
以x轴正半轴到其与原交点(0,0)到(1,0)的这条向量为起点n等分圆,圆心到每个n等分点的向量均称为n次单位根
对于一个单位根,其标号为幅角/(360°/n),特别的,(0,0)到(1,0)的向量标号为0
以下用 wkn w n k 表示标号为k的n次单位根

单位根的性质
1. wkn w n k = cos( 2πn 2 π n )k + sin( 2πn 2 π n )ki
证明:欧拉公式
2. wkn w n k = w2k2n w 2 n 2 k
证明:带入式1,等价于分子分母同乘2,
3. wkn w n k * wkn w n k =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值