说我正在尝试评估多项式:
x^2 + 1
使用快速傅里叶变换方法评估系数。现在我可以使用co-effcient作为快速傅立叶变换的输入将其更改为矩阵/向量形式:
这样:
x^2 + 1 = <1, 0, 1, 0>
这是通过使用系数值来完成的,例如1 = 1,0x ^ 1 = 0,X ^ 2 = 1等等
现在我们到了完全困惑的位置。我打算使用vandermonde矩阵:Vandermonde matrix ~ Wiki使用矩阵将这些值计算成FFT表格:
1 1 1 1
1 i-1-i
1-1 1-i
1-i 1 i
的输出
fft(1,0,1,0)
是
(2,0,2,0)
现在这个步骤我不太明白,我们是如何使用该矩阵得到的(2,0,2,0)?
答案 0 :(得分:3)
首先,您的Vandermonde矩阵不正确。 (4,3)条目应该是-1而不是1,因为第四行应该是(-i) 0 ,( - i) 1 ,( - i ) 2 ,( - i) 3 。特别注意
( - i)*( - i)=( - 1) 2 * i 2 = i 2 = -1。< / p>
通过此校正,结果得出Vandermonde矩阵乘以列向量(1,0,1,0)。
答案 1 :(得分:2)
也许你可以解释一下你的总体目标是什么。我从未听说过用于评估多项式的FFT。它们用于乘以多项式,或者用于卷积信号(等效任务),但除非多项式/信号具有大量项,否则我不会打扰。 x 2 + 1不大。 16个术语并不大,甚至64或256个术语可能更好地通过简单的O(N 2 )技术完成。
Discrete Fourier Transforms使用矩阵M ij =ω ij 其中ω是第N个复数根1,列/行编号从0到N 1。
快速傅立叶变换从不直接使用此矩阵,它们经过大量优化,使用分而治之技术(Cooley-Tukey algorithm)通过串联和并联的2x2 DFT阶段计算最终结果。
如果你把你的矢量写成[0,1,0,1]而不是[1,0,1,0],我想你会看到如果你把它乘以你给出的矩阵,你会得到[0,2,0,2]。 (虽然你有错误,但它是
1 1 1 1
1 i-1-i
1-1 1-1
1-i-1 i
)您正在使用的程序中必须有一些约定,它会反转向量系数的顺序。