首页 > 其他分享 >快速傅里叶变换(FFT)学习笔记

快速傅里叶变换(FFT)学习笔记

时间:2023-07-04 21:55:42浏览次数:50  
标签:项式 多项式 复杂度 FFT 笔记 表示法 相乘 傅里叶

有关多项式的一个基础算法,学起来比较困难。

快速傅里叶变换和傅里叶变换没什么关系,也不是傅里叶发明的。这种算法用于在 \(O(n\log n)\) 时间复杂度内求出两个多项式的卷积(相当于多项式相乘)。

前置知识

多项式的表示

\(n\) 项式等价于 \(n-1\) 次项式。(每个次项的系数都不为零)

系数表示法

形如 \(F(x)=\sum\limits^{n-1}_{i=0} a_ix^i\),把一个 \(n-1\) 次项式的每一次项都表示出来。

两个多项式直接相乘时间复杂度为 \(O(n^2)\)。

点值表示法

对于一个 \(n-1\) 次多项式,可以用 \(n\) 个点 \((x_i,y_i=F(x_i)\) 来表示,可以证明这么表示不会表示为多个 \(n-1\) 次多项式。

当两个表示不同多项式的点 \(x\) 坐标相等,\(y\) 坐标直接相乘。这种情况下相乘时间复杂度为 \(O(n)\)。

两种表示法间的转换

系数表示法 \(\rightarrow\) 点值表示法

对于 \(n-1\) 次项式选取 \(n\) 个点计算对应值来表示。

点值表示法 \(\rightarrow\) 系数表示法

根据每个点列出 \(n-1\) 元方程,通过高斯消元解出方程。

注意在上述及下文的关于多个多项式的计算中,要统一次数,次数低的多项式要在高次上补零。

复数

复数及三角函数学习笔记

思想

标签:项式,多项式,复杂度,FFT,笔记,表示法,相乘,傅里叶
From: https://www.cnblogs.com/lyz09-blog/p/study-polynomial.html

相关文章

  • 将代码和笔记之类的保存到数据库
    平时记录在工作中,会把随手查到的内容,记在文件里面,时间一久,比较零乱,文件太长,在里面查找也不方便。于是想到随便整理一下存数据库得了。先创建数据库,mysql8支持全文索引,自带分词器,用起来很方便。CREATETABLE`books`(`id`intunsignedNOTNULLAUTO_INCREMENT,`title`......
  • 种类并查集 学习笔记
    用于维护「敌人的敌人是朋友」这类的关系。例题:luoguP2024对于点\(i\in[0,n)\)(我习惯用这种方法编号),假想一个点\(i+n\)是它的食物,则\(i\)捕食\(j\)可以通过合并\(j\)和\(i+n\)实现(即认为\(j\)和\(i+n\)是同类),如此下去,开三倍大小并查集即可。......
  • 临时笔记
    编译型语言和解释型语言的区别解释型依赖虚拟机转换为可以执行的机器代码编译型,少了转换步骤诞生时机诞生之初就考虑到了多核cpu的情况。其他语言诞生就没有多核,通过后期加语法框架支持特点语法简洁、开发效率高执行性能好 ......
  • CDQ分治 学习笔记
    按@ouuan大佬所说,CDQ分治可以当作ex归并看待。它的思想和归并排序十分相似:假设要对区间\([l,r)\)处理先不管\([\text{mid},r)\),计算\([l,mid)\)同理计算\([mid,r)\)补回之前忽略的部分,即“归并”例:三维偏序给定\(n\)个点\((a,b,c)\),求\(a_1\lea_2\we......
  • Rust 笔记
    https://github.com/ACMClassCourse-2022/Summer-Ray-TracerRust这门语言真的是挺难的,主要在于编译器贼事儿逼,什么都要管。这篇文章主要内容是给C++的每一样东西一个Rust平替。I/O输出print!(),println!()。其中的感叹号代表宏。用法:leta=3;println!("a={a}");p......
  • 1、笔记本刷ubuntu,安装饥荒服务器
    目录笔记本刷ubuntu,安装饥荒服务器一、准备二、笔记本刷机1、制作UbuntuserverU盘启动盘2、刷机3、设置电源不休眠三、安装饥荒服务器四、最后说下网络笔记本刷ubuntu,安装饥荒服务器一、准备1、一台老旧笔记本,用的我是10年前的联想g400s(i5-3230M处理器,8g内存(原来4g饥荒mod加......
  • ML Agents 学习笔记 (1)
    本文是对https://developer.unity.cn/projects/6232aab0edbc2a0019dcfe38的补充,非原创.0.环境搭建创建虚拟环境,环境内安装ml-agents包等.安装Unity,克隆ML-Agentsgithub仓库至本地.1.打开场景并运行用Unity打开Githubclone下来的项目;具体就是打开Unit......
  • Nginx学习笔记-部署静态页面实践
    目录准备一个静态登录页面demoHTML静态页面-index.htmlCSS样式文件-index.cssNginx配置文件-nginx.conf启动Nginx样例展示准备一个静态登录页面demo需要将下面的两个文件index.html和index.css放到nginx安装目录下html目录中HTML静态页面-index.html<!DOCTYPEhtml><htmll......
  • cesium学习笔记1
    node.js安装Node.js下载安装及环境配置教程【超详细】_nodejs下载_WHF__的博客-CSDN博客进入官网地址下载安装包 https://nodejs.org/zh-cn/download/选择对应你系统的Node.js版本,这里我选择的是Windows系统、64位cesium安装......
  • 单调栈单调队列学习笔记
    目录:单调栈1.1概念1.2实现1.3时间复杂度分析1.4应用单调队列1.1概念1.2实现1.3时间复杂度分析1.4应用习题1.单调栈1.1概念单调栈为满足单调性的栈结构,栈内元素满足单调性。1.2实现为满足单调性,在遍历到一个元素时,若此时加入后栈不满足单调性,则弹出栈......