快速傅里叶变换-初步想法

快速傅里叶变换就是执行多项式乘法。

朴素算法的话就是我们普通乘法的过程,复杂度是n^2。但是用傅里叶,可以打倒nlogn的复杂度。

好,首先给出两个式子

\small f(x)=a_{0}+a_{1}x+a_{2}x^{2}+a_{3}x^{3}...a_{n-1}x^{n-1}

\small g(x)=b_{0}+b_{1}x+b_{2}x^{2}+b_{3}x^{3}...b_{n-1}x^{n-1}

朴素的算法就不讲了。

首先来讲一种点集表示方法。对于f(x),把a当作未知数的话,一共有n个未知数,然后把f(x)看成一个函数的话,解出这n个未知数需要n个点,所以我们可以把f(x)和g(x)表示成下面这种形式

 

\small f(x)={(x_{0},f(x_{0})),(x_{1},f(x_{1})),(x_{2},f(x_{2})).(x_{3},f(x_{3}))...(x_{n-1},f(x_{n-1}))}

 

\small g(x)={(x_{0},g(x_{0})),(x_{1},g(x_{1})),(x_{2},g(x_{2})).(x_{3},g(x_{3}))...(x_{n-1},g(x_{n-1}))}

然后相乘的话就可以表示成为这样子。

\small f(x)={(x_{0},f(x_{0})*g(x_{0})),(x_{1},f(x_{1}*g(x_{1})),(x_{2},f(x_{2}*g(x_{2})).(x_{3},f(x_{3})*g(x_{3}))...(x_{n-1},f(x_{n-1})*g(x_{n-1}))}

没错就这样变成了O(n)的复杂度,很巧妙吧,但是遗憾的告诉你,多项式转化为点集的朴素方法也需要n^2的复杂度...

但是傅里叶就厉害了,它就对此进行了优化,从而就有了快速傅里叶变换。

```后续更新,时间不足。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值