【问题标题】:Fast Fourier Transform Pseudocode?快速傅里叶变换伪代码?
【发布时间】:2012-05-25 12:01:03
【问题描述】:

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

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”?

我不太确定这是否属于这里,因为这个问题非常数学。如果您觉得这个问题跑题了,如果您将它移到一个您认为这个问题更合适的网站,而不是直接关闭它,我将不胜感激。

*Psuedocode 由 S. Dasgupta 从算法 中获得。第 71 页。

【问题讨论】:

    标签: math language-agnostic computer-science


    【解决方案1】:
    1. 循环用于递归。
    2. 负 x 无需添加; FFT 从时间空间转换到频率空间。

    【讨论】:

    • 你能扩展一下吗?我没有最坚实的数学基础——时间与此有什么关系,什么是频率空间?请注意,我没有数学傅里叶变换/模型的经验。这是唯一的体验。其次,递归是为了什么?在 A_e 和 A_o 上调用 FFT 不做递归吗?
    • 老兄,FFT 就是关于数学的。如果你不知道它,你就无法理解算法。了解什么是傅立叶变换会有所帮助——三角函数、复变量、一点微积分。一旦你有了它,你就需要知道为什么离散算法很重要。在这里请人给您解释,没有任何背景,就像请人告诉您如何在不懂物理的情况下向月球发射火箭一样。
    • 我确实有一些数学知识。包含这个问题的书只提供了一些关于单位根的信息,以及一些关于复数的信息。我认为这足以回答这个问题,因为这本书没有提到任何其他内容。您是否可以在回答问题的同时专注于计算机科学方面的同时使用有限的数学?
    • 使用this book。它解释了算法,为什么它很重要,等等。
    • 那本书包括什么?数学....无法摆脱它。 每一次对 FFT 的讨论都假设您了解三角函数、微积分、级数、复变量和傅里叶变换。
    猜你喜欢
    • 1970-01-01
    • 2011-07-12
    • 2017-09-14
    • 2012-12-10
    • 2010-12-13
    • 2013-03-31
    • 2015-08-19
    • 2020-03-29
    • 1970-01-01
    相关资源
    最近更新 更多