欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

[学习笔记] - 基本数论:快速傅立叶变换

最编程 2024-03-01 11:17:49
...

点表示法求出系数表达式

FFT的逆变换怎么搞?

已有\(n\)个点\((\omega_n^{k},A(\omega_n^{k}))\)

我们为了方便将其称之为\((x_k,y_k)\)

\[C_k=\sum_{i=1}^{n-1}y_i(\omega_n^{-k})^i \]

我们可以把这个当做一个关于\(y\)的多项式,\(B(x)=y_0+y_1x+\cdots+y_{n-1}x^{n-1}\)

\[C_k=B(\omega_{n}^{-k}) \]

我们可以再做一次傅里叶变换来求解系数表示式

但是\(C_k\)并不是原多项式的系数,需要再除以一个\(n\)

\[\begin{align} C_k=\sum_{i=1}^{n-1}y_i(\omega_n^{-k})^i &=\sum_{i=1}^{n-1}(\sum_{j=0}^{n-1}a_j{\omega_n^{i}}^j){\omega_n^{-k}}^i\\ &=\sum_{i=0}^{n-1}(\sum_{j=0}^{n-1}a_j(\omega_{n}^{j-k}))^i\\ &=\sum_{j=0}^{n-1}a_j(\sum_{i=0}^{n-1}(\omega_{n}^{j-k})^{i}) \end{align}\]

我们把\(\sum_{i=0}^{n-1}(\omega_{n}^{j-k})^{i}\)可以看做一个多项式

\(S(x)=1+x+x^2\cdots+x^{n-1}\)

这么这里就相当于\(S(\omega_{n}^{k})\)

分两种情况来看

  • \(①.\) \(k \ne 0\)

    \[S(\omega_{n}^{k}) \gets \omega_{n}^{k}S(\omega_{n}^{k}) \]

    发现这两个式相等

    所以\((1-\omega_{n}^{k})S(\omega_{n}^{k})=0\)

    因为\(\omega_{n}^{k}\ne 1\)

    所以\(S(\omega_{n}^{k})=0\)

  • \(②.\) \(k=0\)

    \(S(\omega_{n}^k)=S(1)=n\)

因此

\[\sum_{j=0}^{n-1}a_j(\sum_{i=0}^{n-1}(\omega_{n}^{j-k})^{i})=na_k \]