《FFT家族—从不会到崩溃(坑)》读blog笔记
免责声明
原文地址https://blog.csdn.net/linjiayang2016/article/details/80341958,作者linjiayang2016.\text{linjiayang2016}.linjiayang2016.
本文是对原文的微薄补充,目的是为了更好地读懂原文。
正弦sin\sinsin, 余弦cos\coscos
$RT.\ 在在在Rt△ABC中,中,中,∠B=90°$,则有
sin A=BCAC\sin\ A=\frac{BC}{AC}sin A=ACBC
cos A=ABAC\cos\ A=\frac{AB}{AC}cos A=ACAB
快速傅里叶变换过程
以用FFTFFTFFT解决多项式乘法的问题为例。
$1.\ 读入多项式读入多项式读入多项式a,b$;
$2.\ 对对对a,b$分别做傅里叶变换;
3. a∗=b3.\ a*=b3. a∗=b;
$4.\ 对对对a数组做逆变换并除以长度数组做逆变换并除以长度数组做逆变换并除以长度n$.
## 关于单位根的补充说明
$\ \ \ \ w^k_n*w^1_n$
$=(\cos\ k*\frac{2\pi}{n}+\sin\ k*\frac{2\pi}{n}\ i)\ *\ (\cos\ \frac{2\pi}{n}+\sin\ \frac{2\pi}{n}\ i)$
$=\cos\ k*\frac{2\pi}{n}\ *\ \cos\ \frac{2\pi}{n}\ +\ \sin\ k*\frac{2\pi}{n}\ i\ *\ \cos\ \frac{2\pi}{n}$
$\quad+\ \cos\ k*\frac{2\pi}{n}\ *\ \sin\ \frac{2\pi}{n}\ i\ +\ \sin\ k*\frac{2\pi}{n}\ i\ *\ \sin\ \frac{2\pi}{n}\ i$
$=\cos\ ((k+1)*\frac{2\pi}{n})\ +\ \sin\ ((k+1)*\frac{2\pi}{n})$
$=w^{k+1}_n.$
## 两角和公式
$\sin\ (A+B)=\sin\ A·\cos\ B+\cos\ A·\sin\ B$
$\cos\ (A+B)=\cos\ A·\cos B-\sin\ A·\sin\ B$
## 快速傅里叶逆变换
原文中的$y$指的是上文的$a$,原文中的$a$指答案数组.
对于$c_i=\sum\limits^{n-1}_{j=0}a_j(\sum\limits^{n-1}_{i=0}(w^{j-k}_n)^i)$$\ \ \ (k$是常数$)$,
$1.\ $当$j-k=0$时,$w^{j-k}_n=1+0i$,$\therefore \sum\limits^{n-1}_{i=0}(w^{j-k}_n)^i=n$;
$2.\ $当$j-k≠0$时,原文已阐述详尽,在此不做赘述.
## 线性求翻转序列
对于已知的翻转序列$r_i$,我们在它前面加上$1$或$0$,就得到了$r_{2i+1}$和$r_{2i+2}.$
举例. $\because r_6=11_{(2)}$,
$\therefore r_{13}=$ `0`$11_{(2)}.\ \ $(在$r_6$前补`0`)
$\quad r_{14}=$ `1`$11_{(2)}.\ \ $(在$r_6$前补`1`)
《FFT家族—从不会到崩溃(坑)》读blog笔记的更多相关文章
- 读paper笔记[Learning to rank]
读paper笔记[Learning to rank] by Jiawang 选读paper: [1] Ranking by calibrated AdaBoost, R. Busa-Fekete, B ...
- 【每日一题】Squares UVA - 201 暴力+输出坑 + 读文件模板
题意 给你n*n的图,让你数正方形 题解:暴力for每个点,对于每个点从它出发顺时针走一个正方形.走完就ans[i]++; 坑:多输了一行******,然后在那里手摸样例,无限debug orz #d ...
- 在 ASP.NET Core 中发送邮件遇到的坑_学习笔记
功能需求 因为项目需要有个忘记密码验证邮箱再重新修改密码的功能,然后我选用了很简单的一个方案,通过验证登录用户的邮箱然后发送邮件,通过这个邮件发送的链接地址来最后实现密码修改的小功能. 项目环境及实现 ...
- 新开的坑-python学习笔记(1)——连接符与转义
1/print输出格式虽然知道怎么用却还要打破砂锅的问问题... 问题答案是 需要读很多基础文档教程 --------例如 "+" . "," 作为连接符的作 ...
- 五、mariadb遇到的坑——Linux学习笔记
C#连接MySQL异常:The host localhost does not support SSL connections. 解决方案: 连接字符串添加如下语句. SslMode = none; ...
- WEB 前端模块化,读文笔记
文章链接 WEB 前端模块化都有什么? 知识点 根据平台划分 浏览器 AMD.CMD 存在网络瓶颈,使用异步加载 非浏览器 CommonJS 直接操作 IO,同步加载 浏览器 AMD 依赖前置 req ...
- viewport移动端适配,读文笔记
文章地址: viewport移动端适配 笔记: 移动端适配目的: 希望在屏幕尺寸大小不同的手机上进行访问页面时,页面显示的效果能合理的展示,我们期望的是在手机屏幕较大时显示的内容比较大一些,手机屏幕小 ...
- JavaScript DOM 编程艺术(第二版) 初读学习笔记
这本书留给我的印象就是结构.表现和行为层的分离,以及书后面部分一直在强调的最佳实践原则:平稳退化,逐步增强,向后兼容以及性能考虑. 要注意这不是一本JavaScript入门书籍~ 2.1 准备工作 用 ...
- 解决问题:当redis服务端断开的时候`进程会崩溃(转载6哥笔记)
package main import ( "fmt" "github.com/astaxie/beego/logs" "github.com/gar ...
随机推荐
- SpringCloud学习笔记(5):Hystrix Dashboard可视化监控数据
简介 上篇文章中讲了使用Hystrix实现容错,除此之外,Hystrix还提供了近乎实时的监控.本文将介绍如何进行服务监控以及使用Hystrix Dashboard来让监控数据图形化. 项目介绍 sc ...
- 定义一个Person类,其中包括:1.定义属性:姓名、年龄、民族作为成员变量。定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化。3.定义多个方法:分别显示相应的属性值,例如getName(){System.out.print("名称="+name+";"); }4.定义一个方法“成长”:实现年龄的增加,每执行一次年龄增加1
题目显示不全,完整题目描述: (1)定义一个Person类,其中包括:1.定义属性:姓名:年龄:民族作为成员变量.定义静态成员变量:人数2.定义构造方法:对成员变量进行初始化.3.定义多个方法:分别显 ...
- nfs 存储服务
今日内容: NFS 1.什么是nfs? network file system 网络文件系统 nfs共享存储 2.nfs能干什么? nfs 能为 不同主机系统之间 实现 文件的共享 3.为什么要使用n ...
- SpringCloud之Turbine
[前面的话]书接上文,本文的某些知识依赖我的上一篇SpringCLoud的文章:SpringCloud之Feign,如果没有看过可以先移步去看一下.前文提到了hystrix的应用,以及hystrix的 ...
- 两个变量交换数字 不用第三个变量的情况下 int a = 5,b = 6
今天可是涨见识额 记录一下 第一种方法: a=a+bb=a-ba=a-b 第二种: b= a+(a=b)*0 一句话搞定
- 【django】分页
分页 1.简单分页 from django.conf.urls import url from django.contrib import admin from app01 import views ...
- 阿里云服务器ecs配置之安装jdk
一.安装环境 操作系统:Centos 7.4 JDK版本:1.8 工具:Xshell5.Xftp5 二.安装步骤 第一步:下载安装包 (官网)链接: 下载适合自己系统的jdk版本,如图:我下载的是64 ...
- Java入门学习笔记(全)
JAVA https://zhuanlan.zhihu.com/p/21454718 引用部分实验楼代码,侵删 先通读文档 再亲自试标程 复习时自己再批注 1.a = b += c = -~d a = ...
- .net core 3.0 Signalr - 07 业务实现-服务端 自定义管理组、用户、连接
Hub的管理 重写OnConnectedAsync 从连接信息中获取UserId.Groups,ConnectId,并实现这三者的关系,存放于redis中 代码请查看 using CTS.Signal ...
- 为什么要学习go语言
终于等到你!Go语言--让你用写Python代码的开发效率编写C语言代码. 为什么互联网世界需要Go语言 世界上已经有太多太多的编程语言了,为什么又出来一个Go语言? 硬件限制:摩尔定律已然失效 摩尔 ...