利用FFT和逆FFT求多项式乘法 的原理:

利用FFT和逆FFT求多项式乘法 的原理:
假设是N次和M次多项式的乘法,
首先明白为什么要用FFT方法,因为一个字,快。N越大,快得越离谱。
然后是过程,三步走:
1.由系数来求点值(求值)   2.代入点值计算总体Y.   3.由点值计算系数(插值)

其实步骤1的点值可以任意取,只要取够了n+m次,就可以表示了,不过,任意取的代价就是步骤3基本没法求(除非你用什么matlab工具或者什么拟合算法)。步骤3会非常慢以至于失去意义。

于是,FFT成功上位。一堆又一堆的数学公式出现了,首先登场的是单位复根这个家伙。
点值选取了它,就可以大大简化运算了(由于它的种种变态属性)。

我们用分治法将N次多项式搞成两个多项式,A(x) = A1(x*x) + xA2(x*x)
选取n个n次单位复根的平方作为点值,由于定理:
     若n>0且n是偶数,n个n次单位复根的平方等于n/2个n/2次单位复根。(折半定理)证明不难,主要是从w本身的值的特性入手。
    于是问题规模从n转换为n/2。递归一下,解法最后会变成加法或者减法如此easy的东西。

通过以上便完成了步骤1和2,3怎么办?逆FFT登场。
矩阵积 y = V a,V是关于x的范德蒙德矩阵。为什么这个会很巧妙地成立,我也不知道。
现在,考虑 a = V^-1*y,得到了 a = 1/n sum(0-n-1){y*w^-kj}. 然后,世界就很简单地去运行了。
那它不过就是求一个逆矩阵而已吗?和逆FFT有神马关系?
这个式子的形式很不好意思,名字就是逆FFT。。。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值