快速傅里叶变换伪码?

时间:2012-05-17 21:19:16

标签: math language-agnostic computer-science

以下代码的目的是将多项式从系数表示转换为值表示,方法是将其除以奇数和偶数幂,然后在较小的多项式上递归。

function FFT(A, w)

Input: Coefficient representation of a polynomials A(x) of degree ≤ n-1, where n 
is a power of 2w, an nth root of unity.

Output: Value representation A(w^0),...,A(w^(n-1))

if w = 1; return A(1)
express A(x) in the form A_e(x^2) and xA_o(x^2) /*where A_e are the even powers and A_o  
the odd.*/
call FFT(A_e,w^2) to evaluate A_e at even of powers of w
call FFT(A_o,w^2) to evaluate A_o at even powers of w
for j = 0 to n-1;
    compute A(w^j) = A_e(w^(2j))+w^j(A_o(w^(2j)))

return A(w^0),...,A(w^(n-1))
  1. 用于for循环的是什么?

  2. 为什么伪代码只添加较小的多项式,是否也需要减去它们? (计算A(-x))。这不是算法完全基于什么?添加减去较小的多项式以将这些点减少一半?*

  3. 为什么“w”的权力被评估而不是“x”?

  4. 我不太确定这是否属于这里,因为这个问题非常数学化。如果你认为这个问题不合时宜,我会很感激,如果你把它移到一个你认为这个问题更合适的网站上,而不是关闭它。

    * Psuedocode是由S. Dasgupta从 Algorithms 获得的。第71页。

1 个答案:

答案 0 :(得分:0)

  1. 循环用于递归。
  2. 无需添加负x; FFT从时间变换到频率空间。