快速傅里叶变换
Posted point-king
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速傅里叶变换相关的知识,希望对你有一定的参考价值。
关于复数
2次方程的求根公式
$$ax^2+bx+c=0(a
eq0)$$
$$x=frac{-bpmsqrt{b^2-4ac}}{2a}$$
3次方程(无2次项)的求根公式
$$x^3=mx+n$$
$$x=sqrt[3]{frac{n}{2}+sqrt{({frac{n}{2}})^2-({frac{m}{3}})^3}}+sqrt[3]{frac{n}{2}-sqrt{({frac{n}{2}})^2-({frac{m}{3}})^3}}$$
复数定义
形如$z=a+bi$的数就是复数
记作:$a=Re(z),b=Im(z)$
复数的计算
复数的几何形式
复平面,x轴为实轴,y轴为虚轴。
虚数的模,$|z|=sqrt{a^2+b^2}$
极坐标,$z(r, heta)$
极坐标的复数相乘,$(r1, heta1)(r2, heta2)=(r1r2, heta1+ heta2)$
关于DFT
点值表示法
把这个多项式理解成一个函数,用这个函数上的若干个点的坐标来描述这个多项式。
f(x)={(x0,f(x0)),(x1,f(x1)),(x2,f(x2)),...,(xn?1,f(xn?1))}
你会得到n+1个方程,其中x[0~n]和y[0~n]是已知的, a[0~n]是未知的。
n+1的未知数, n+1个方程所组成的方程组为“n+1元一次方程”,因为它是“一次方程”,所以(一般情况下,不考虑无解和无数解)可以通过“高斯消元”解得所有未知数唯一确定的值。
也就是说,用点值表示法可以确定出唯一确定的系数表示法中的每一位的系数。
傅里叶变换
这种把一个多项式转化成“离散的点”表示的方法就叫做“DFT”(离散傅里叶变换)。
把“离散的点”还原回多项式的方法就叫做“IDFT” (离散傅里叶反变换)。
多项式乘法
单位根
这里选择单位根(模为1的点的集合)上的点是因为$x^2=1$
关于FFT
这里便是利用奇偶性进行分治,通过下面的公式推导使运算加快。
这是FFT分治的重点,他利用前面提到的单位根的性质,将每次计算的时间变成了一半,这边是FFT分治的关键。
伪代码:
FFT(a)
{
n=a.length;
if(n==1)
{
return a;
}
e=(a[0],a[2],...,a[n-2]);
o=(a[1],a[3],...,a[n-1]);
y_e=FFT(e);
y_o=FFT(o);
for(int k=0;k<=n/2-1;++k)
{
w=e^(2*π*i*k/n);
y[k]=y_e[k]+w*y_o[k];
y[k+n/2]=y_e[k]-w*y_o[k];
}
}
关于IDFT
……(未完待续)
以上是关于快速傅里叶变换的主要内容,如果未能解决你的问题,请参考以下文章