Chgtaxihe's blog Chgtaxihe's blog
首页
练习
算法学习
读书笔记
小玩意

Chgtaxihe

首页
练习
算法学习
读书笔记
小玩意
  • 数论

    • 一些小问题
    • 二次剩余学习笔记
    • 卡特兰数学习笔记
    • 同余最短路学习笔记
    • 康托展开学习笔记
    • 快速傅里叶变换学习笔记
      • 简述
      • 复数的一些性质
    • 拉格朗日插值学习笔记
    • 拓展欧几里得学习笔记
    • 斐波那契数列学习笔记
    • 斯特林数笔记
    • 本原勾股数组学习笔记
    • 模运算学习笔记
    • 欧拉函数
    • 类欧几里得学习笔记
    • 素性检测与大数分解
    • 素数计数问题
    • 组合数问题
    • 高斯整数学习笔记
  • 动态规划

  • 暴力

  • 图论

  • 数据结构

  • 字符串

  • 几何

  • 博弈论

  • 其他

快速傅里叶变换学习笔记

# 快速傅里叶变换

# 简述

F(x)=anxn+an−1xn−1+...+a0F(x)=a_nx^n+a_{n-1}x^{n-1}+...+a_0F(x)=an​xn+an−1​xn−1+...+a0​

G(x)=bnxn+bn−1xn−1+...+b0G(x)=b_nx^n+b_{n-1}x^{n-1}+...+b_0G(x)=bn​xn+bn−1​xn−1+...+b0​

求C(x)=F(x)G(x)C(x)=F(x)G(x)C(x)=F(x)G(x)

暴力求解复杂度O(n2)O(n^2)O(n2)

因为n+1n+1n+1个xxx不同的点可以唯一确定一个次数不超过nnn的多项式,因而我们可以从F(x)F(x)F(x)中选取一些点(x0,F(x0))...(xk,F(xk))(x_0,F(x_0))...(x_k,F(x_k))(x0​,F(x0​))...(xk​,F(xk​)),在G(x)G(x)G(x)中选取一些点(x0,G(x0))...(xk,G(xk))(x_0,G(x_0))...(x_k,G(x_k))(x0​,G(x0​))...(xk​,G(xk​))

那么显然点(xi,F(xi)G(xi))(x_i,F(x_i)G(x_i))(xi​,F(xi​)G(xi​))在y=C(x)y=C(x)y=C(x)上,可以用这些点得到C(x)C(x)C(x)的表达式

因此FFT算法流程可以表示为:

系数表达式转为点值表达(DFT) -> 点值表达相乘 -> 点值表达转为系数表达(IDFT)

# 复数的一些性质

  1. 复数相乘:模长相乘,辐角相加

  2. 对于wn=1w^n=1wn=1的解(称为单位根,wnkw_n^kwnk​为第kkk个单位根)有以下性质

    1. wn0=1w_n^0=1wn0​=1
    2. wnk=(wn1)kw_n^k=(w_n^1)^kwnk​=(wn1​)k
    3. wnj∗wnk=wnj+kw_n^j*w_n^k=w_n^{j+k}wnj​∗wnk​=wnj+k​
    4. w2n2k=wnkw_{2n}^{2k}=w_n^kw2n2k​=wnk​
    5. 若nnn为偶数,wnk+n/2=−wnkw_n^{k+n/2}=-w_n^kwnk+n/2​=−wnk​

    记不住没关系,看不懂的时候回来找公式就好

# 参考资料

傅里叶变换(FFT)学习笔记 (opens new window)

浅谈FFT (opens new window)

浅谈FFT--从DFT到CZT,及一些技巧 (opens new window)

上次更新: 2021/02/24, 03:37:30
康托展开学习笔记
拉格朗日插值学习笔记

← 康托展开学习笔记 拉格朗日插值学习笔记→

最近更新
01
深入理解Java虚拟机
03-04
02
DNS工作原理
02-27
03
改用VuePress啦
02-23
更多文章>
Theme by Vdoing | Copyright © 2019-2021
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式