【问题标题】:Compute (x^2 + 1)^3 using FFT and IFFT使用 FFT 和 IFFT 计算 (x^2 + 1)^3
【发布时间】:2015-07-06 05:09:27
【问题描述】:

到目前为止,我设法运行了 FFT,并得到了下一张系数表:

[2, 1 + i, 0, 1 - i, 2, 1 + i, 0, 1 - i]

我遇到的问题是计算逆并以系数形式获得多项式。你能帮我解释一下如何确定我需要使用的单位根的倒数吗?以及如何应用 IFFT 的更广泛解释。

非常感谢!

【问题讨论】:

  • 我不同意,这是一个算法问题,我要求解释如何执行 IFFT 算法,包括一些我在阅读时不理解的数学点。
  • 您使用什么语言?如果您能够执行前向 FFT,那么执行 IFFT 应该很容易。
  • 目前我正试图在纸上解决它,但我已经用 Java 编写了 FFT。

标签: algorithm fft polynomial-math polynomials ifft


【解决方案1】:

您究竟想用 FFT/IFFT 做什么?

  1. 如果xbignum

    • 参见fast bignum sqr 特别是Schönhage-Strassen 乘法
    • 对于 ^2^3,您只需计算一次 NTT/FFT 而不是 2 次和 3 次
  2. x^2+1 是多项式

[备注]

  • 对于这两种情况,使用 NTT 比使用 FFT 要好得多
  • 由于精度损失(舍入误差)

【讨论】:

  • 我用它来进行多项式的乘法,但问题是关于单位根的微小细节,我不知道如何确定这些。提供的链接告诉我我已经知道的一切。
  • @Mark 如果您使用自定义统一根(在有限域上),那么您执行的是 NTT 而不是 FFT !!!请参阅 NTT 链接。选择哪个模素数并不重要,但它必须大于任何子结果(系数) 我正在使用可用的最大无符号 32 位素数 0xC0000001 统一的根及其逆很棘手 我写了一个搜索程序整个 32 位范围并测试所有需要的条件,结果在 NTT 链接源代码成员函数bool fourier_NTT::init(DWORD n)
  • 谢谢!我会看看,如果我不设法退出会在这里发表评论
猜你喜欢
  • 2011-08-06
  • 2011-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-06
  • 1970-01-01
  • 2012-08-11
相关资源
最近更新 更多