▎前言  

  小编相当的菜,这篇博客难度稍高,所以有些可能不会带有证明,博客中更多的是定义。

  我们将要学到的东西:

  • 复数
  • 暴力多项式乘法
  • DFT

  当然,小编之前就已经写过一篇博客了,主要讲的就是基础多项式,如果你已经会了下面的内容就无需学了,否则请进入传送门

  • 环和域
  • 多项式
  • 卷积
  • 多项式乘法
  • 多项式点值表示
  • 多项式的根
  • 单位根

▎复数

☞『引入』

  其实小编早就应该讲复数了,但是上次忘了讲,那么这次一定要补上,好了,切入正题:

  如果你信誓旦旦的在初中卷子上不判断根号下(√)的数是否是负数,那么你极有可能会被老师扇两巴掌,因为这是初中要注意的一大重点。  

  那么问题来了,究竟有没有诸如√-1这种数呢?其实是有的,初中阶段只会告诉你实数是什么,却不会告诉你还有诸如√-1这样的虚数(顾名思义,不存在的数)。

  如果你是第一次见复数,那么你可能先想到的是单数和复数,其实不是这样的。

☞『定义』

  我们把形如z=a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位。当z的虚部等于零时,常称z为实数;当z的虚部不等于零时,实部等于零时,常称z为纯虚数。复数域是实数域的代数闭包,即任何复系数多项式在复数域中总有根。 复数是由意大利米兰学者卡当在十六世纪首次引入,经过达朗贝尔、棣莫弗、欧拉、高斯等人的工作,此概念逐渐为数学家所接受。(copy自百度)

  其实就是实数与虚数的统称啦。

☞『表示』

  复数的表示字母是z,那么一个复数z可以表示为z=ai+b,其中a,b属于实数,i属于虚数,那么a称为虚部,b称为实部,i称为虚数单位。

  例如i可以满足i2=1。

☞『运算』

  复数和向量不同。

  复数的运算和实数几乎一样,支持四则运算。

▎暴力多项式乘法

☞『算法』  

  在之前,我们已经知道了系数表示法和点值表示法的区别,假设有两个多项式分别长这样:

  

  

  那么这两个多项式乘起来看着就心烦,那么怎么办呢?再看看点值表示法怎么样吧:

  f(x)={(x0,f(x0),(x1,f(x1),(x2,f(x2),(x3,f(x3),…}

  g(x)={(x0,g(x0),(x1,g(x1),(x2,g(x2),(x3,g(x3),…}

  那么积是多少?

  h(x)={(x0,f(x0)•g(x0),(x1,f(x1)•g(x1),(x2,f(x2)•g(x2),(x3,f(x3)•g(x3),…}

  怎么样,点值表示法干题是不是爽到爆呢?

  但是问题是:系数表示法如何变成点值表示法?

  我们其实只需要n个数当做x带入得到f/g值即可。但是这样的做法无疑是O(n2)级别的,有时满足不了我们的需求,所以就要用到离散傅里叶变换了。

▎DFT

☞『引入』

  这个算法有点不太对劲,百度介绍的好难呀。

  我现在在质疑这个算法是不是处理物理的。

☞『定义』

  离散傅里叶变换(DFT),是傅里叶变换在时域和频域上都呈现离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DTFT)频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即使对有限长的离散信号作DFT,也应当将其看作经过周期延拓成为周期信号再作变换。在实际应用中通常采用快速傅里叶变换以高效计算DFT。

  我猜你也看不懂,其实就是快速系数转点值表示法呗。

☞『算法核心』

  在之前,我们说的n个数带入转点值中的n个数是随便找的,所以出现一些棘手的问题很正常,就比如说当遇到高次的项时总会很难算。

  所以我们如果能刻意的找到一些好算的x,那么就不难算出f/g的值了。

  如果我们能找到一些x满足xk=1,那么就不必每个次方都算了。

  想一想1和-1绝对是,考虑虚数的话i和-i也算。

  那么我们可以画上这样一个平面直角坐标系:

  

  可是单单这么四个点显然是不够的,比如说n=8,傅里叶表示应该将这个圆平分成八份,取这样的八个点:

  

  从(0,1)依次标号k:

  

  那么只要求出这八个点表示的复数即可,我们记标号k的点表示的复数为ωnk,那么就有:

  

  这里面的东西都可以算出来的。

【算法•日更•第四十二期】离散傅里叶变换(DFT)的更多相关文章

  1. 【算法•日更•第三十二期】教你用出windows体验的Linux

    ▎前言 小编昨天闲的不行,就装了一个linux系统,linux的发行版很多,小编认为ubuntu很好用,于是就在使用ubuntu. 没错,我现在就在使用ubuntu来写博客. 刚才还装了一个QQ,不过 ...

  2. 【算法•日更•第四十三期】QQ for linux

    废话不多说,直接看一张图: 没错,这是QQ,但是这有什么稀奇的?但是在Linux上使用QQ就很稀奇了. 众所周知,腾讯早就已经对Linux下的QQ和微信停止了服务,即便是网页版也不能用,通信这一直是小 ...

  3. 【算法•日更•第五十四期】知识扫盲:什么是operator?

    ▎前言 这个东西和迭代器长的很像,但是比迭代器常见的多. 今天就来浅谈operator. ▎定义 operator是C#.C++和pascal的关键字,它和运算符一起使用,表示一个运算符函数,理解时应 ...

  4. 【算法•日更•第三十九期】迭代加深搜索:洛谷SP7579 YOKOF - Power Calculus 题解

    废话不多说,直接上题: SP7579 YOKOF - Power Calculus 题意翻译 (略过没有营养的题干) 题目大意: 给出正整数n,若只能使用乘法或除法,输出使x经过运算(自己乘或除自己, ...

  5. 【算法•日更•第三十五期】FF算法优化:EK算法

    ▎写在前面 FF算法传送门 之前我们已经学过了FF算法(全称Ford-Fulkerson算法)来找最大流,但是这种算法仍有诸多不对的地方. 其实这种算法存在着严重的效率的问题,请看下面的图: 以这个图 ...

  6. 【算法•日更•第五十期】二分图(km算法)

    ▎前言 戳开这个链接看看,惊不惊喜,意不意外?传送门. 没想到我的博客竟然被别人据为己有了,还没办法投诉. 这年头写个博客太难了~~~ 之前小编写过了二分图的一些基础知识和匈牙利算法,今天来讲一讲km ...

  7. 【算法•日更•第三十一期】KMP算法

    ▎前言 这次要讲的HMP算法KMP算法很简单,是用于处理字符串的,之前一直以为很难,其实也不过如此(说白了就是优化一下暴力). ▎处理的问题 通常处理的问题是这样的:给定两个字符串s1和s2,其中s1 ...

  8. 【算法•日更•第四十七期】Mac与windows系统的差别

    小编最近装了个Mac系统,因为小编已经有笔记本可以用linux了,所以就决定在台式机上装个双系统,结果一不小心把Mac装在C盘上了,哎,说多了都是泪啊. 其实用了Mac之后才发现windows特别好用 ...

  9. 【算法•日更•第三十期】区间动态规划:洛谷P4170 [CQOI2007]涂色题解

    废话不多说,直接上题:  P4170 [CQOI2007]涂色 题目描述 假设你有一条长度为5的木版,初始时没有涂过任何颜色.你希望把它的5个单位长度分别涂上红.绿.蓝.绿.红色,用一个长度为5的字符 ...

随机推荐

  1. Shell基本语法---while语句

    while语句 格式 while [ 条件判断式 ] do 执行动作 done 例子 i= while [ $i -gt ] do echo $i i=$((i - )) done

  2. 拿不到offer?阿里HR教你简历应该这样写

    首先,要明白公司看重的是你的什么?为什么要聘请你?当然是看重你的能力,聘请你来是要来干活的. 都知道简历是敲门砖,那么这一块砖要怎么才能敲得响,怎么才能敲得开大厂的门. 1 能力萃取!什么是能力萃取? ...

  3. 萌新学渗透系列之Hack The Box_Legacy

    我将我的walkthrough过程用视频解说的形式记载 视频地址https://www.bilibili.com/video/BV1mZ4y1u7jG 一是因为看我视频的后来者应该都是刚入门的新手,视 ...

  4. 浅谈NTLM Hash

    认识Windows Hash 早期SMB协议在网络上传输明文口令.后来出现LAN Manager 挑战/响应验证机制(LM),其很容易破解,因此微软提出了WindowsNT挑战/响应验证机制(NTLM ...

  5. let、const、var的区别

    1.使用var声明的变量,其作用域为全局或者该语句所在的函数内,且存在变量提升现象. 下面使用node.js演示,也可以插入到html文件中使用以下代码 var a = 10; function te ...

  6. pandas_重采样多索引标准差协方差

    # 重采样 多索引 标准差 协方差 import pandas as pd import numpy as np import copy # 设置列对齐 pd.set_option("dis ...

  7. PHP acos() 函数

    实例 返回不同数的反余弦: <?phpecho(acos(0.64) . "<br>");echo(acos(-0.4) . "<br>&q ...

  8. PHP mysqli_select_db() 函数

    更改连接的默认数据库: 删除数据库 <?php高佣联盟 www.cgewang.com // 假定数据库用户名:root,密码:123456,数据库:RUNOOB $con=mysqli_con ...

  9. 剑指 Offer 53 - II. 0~n-1中缺失的数字

    本题 题目链接 题目描述 我的题解 二分法 思路分析 排序数组中的搜索问题,首先想到二分法 当nums[center] > center 时,缺少的数在左区间 当nums[center] = c ...

  10. C++Primer学习日记

    计划:4.27-4.30 完成IO库.顺序容器两章 4/28 ------------------------------------------------- 为什么要使用using namespa ...