▎前言  

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

  我们将要学到的东西:

  • 复数
  • 暴力多项式乘法
  • 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. socket链接

    服务端: package com.batch.service.impl; import java.io.BufferedReader; import java.io.BufferedWriter; i ...

  2. linux命令笔记记录(自用)

    1.解除yum锁定: sudo rm -rf /var/run/yum.pid 2.删除文件夹: rm -rf /var/log/httpd/access 3.更新pip: python -m pip ...

  3. Spring葵花宝典

    一 Spring简介 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架 为了解决企业应用开发的复杂性而创建 二 Spring功能 1. 方便解耦 简化开发 Spring就是一 ...

  4. python爬虫获取localStorage中的数据(获取token)

    # 此为获取东航登录时的token(经分析js得出此token存储于localstorage中) browser = webdriver.Chrome(executable_path='xxxx')b ...

  5. 解决智慧城市发展困扰:Web 3D 智慧环卫 GIS 系统

    前言 智慧环卫,依托物联网技术与移动互联网技术,对环卫管理所涉及到的人.车.物.事进行全过程实时管理,合理设计规划环卫管理模式,提升环卫作业质量,降低环卫运营成本,用数字评估和推动垃圾分类管理实效.智 ...

  6. Spring发布WebService并调用已有的WebService

    发布WebService 1.编写生成WebService的Java类 package com.webService; import com.service.PianoServiceImpl; imp ...

  7. IO—》File类

    IO概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了.那怎么办呢?能不能把运算完的数据都保存下来,下次程序启动的时候,再把这些数据 ...

  8. 使用AOP获取自定义注解的内容

    目录结构: 一:自定义注解 package org.example.annotation; import java.lang.annotation.ElementType; import java.l ...

  9. “商家参数格式有误”应用切微信H5支付完美解决方案

    一.业务场景发生 最近在跟一些合作公司作业务对接,在对方的APP中接入我们的H5支付,包括微信和支付宝. 那就开搞,进展顺利,貌似一切都在掌握之中,给到对方一个链接即可调起支付.形如: https:/ ...

  10. 浅析BST二叉搜索树

    2020-3-25 update: 原洛谷日报#2中代码部分出现一些问题,详情见此帖.并略微修改本文一些描述,使得语言更加自然. 2020-4-9 update:修了一些代码的锅,并且将文章同步发表于 ...