1. 引子

看傅立叶变换的时候,一直奇怪,幂指数是怎么映射成三角函数的?学习了一下欧拉公式,果然很神奇,用到了自然常数e,圆周率π,虚数i,三角函数sin/cos,指数,还有泰勒展开.不是算法有多难,只是涉及基础太多,经常被卡住,总结如下.

2. 泰勒展开

泰勒展开是用多项式逼近原函数,这么做是因为像sin(x)这样的函数,如果代入x=4很难算出结果,但是将x的值代入形如f(x)=a0+a1x+a2x2+a3x3…的多项式就很容易计算。具体是用原函数的导数实现的,把函数展开成多项式,公式如下:

图片.png

其中Rn(x)是余项

3. 自然常数e

e是自然常数(欧拉数),它是一个约等于2.718的无理数,定义是

图片.png

它的含义可以通过复利来理解,假设你有1块钱,年利息是1块钱(100%),一年后可拿到两块钱(1+1/1)1=2;按利滚利计算,如果半年付一次利息(1+1/2)2=2.25;一个月付一次息,(1+1/12)12=2.61;每天付一次息,(1+1/365)365=2.715,当x驱于无穷时e约为2.718.

4. 自然指数e^x的泰勒级数展开

把ex在x=0处展开,由于e0=1且ex的导数还是ex,展开后得到

图片.png

图片.png

上图是e^x,以及展开式前5项和前10项拟合的图像

5. 复数

复数是形如a+b*i的数,其中a,b是实数,i^2=-1.(对应直角坐标系)

在复变函数(复数作为自变量和因变量的函数)中,变量z可以写成z=r (cosθ+ isinθ) .r是z的模,即r = |z|; θ是z的辐角,复数记作点Z(a,b)或向量OZ(对应极坐标系)

图片.png

把乘一次i看成相对0点逆时针转90度,乘两次,转180度,转成实轴的-1,转三次是-i,转四次又回到单位1。因此可以把其虚部看成定义如何旋转。

6. 把虚数i代入e^x的展开式

虚数i是-1开方,因此有i^1=i, i2=-1,i3=-i,i^4=1

图片.png

此时可以看到其结果分为实部和虚部两部分

7. 把sin(x)做泰勒级数展开

在x=0处展开,由于sin(0)=0,cos(0)=1,sin’(x)=cos(x),cos’(x)=-sin(x)

图片.png

8. 把cos(x)做泰勒级数展开

在x=0处展开

图片.png

9. 欧拉公式

由以上几步,可以看到e^ix的实部和虚部正好对应sin(x)和cos(x)的展开,据此,得到欧拉公式:

图片.png

欧拉公式将指数函数的定义域扩大到了复数域,建立了三角函数和指数函数的关系,被誉为“数学中的天桥”。

下图中,将上式右侧表示为二维坐标中的点,xy轴分别表示其实部虚部,θ为转角(即上式中的x),转动半径为单位1(模不变).它的几何意义就是随着虚部x的增加不断转圈.

图片.png

可以把 e^(ix) 看作通过单位圆的圆周运动来描述单位圆上的点,e^(ix)表示在单位圆上转动了x弧度(即某个角度时)得到的向量,以此类推,e^(πi)在单位圆上转了半圈。显然得到的是实轴上的-1,然后与1合并可抵消得到0 ,由此得到 :

图片.png

10. 扩展成时间的函数

图片.png

上图中又加入了t,把e(ix)想成e(iwt),t是时间,w是系数。把平面上的转圈扩展成了空间中的转圈,纵轴表示时间t,两个横轴分别为实部(cos(t))和虚部(sin(t)),蓝线经过的点是eix,即,把时域上的eix分别投射到了实轴cos(t)和虚轴sin(t),它们都是时间t的函数.图中可看到正余和余弦的投射(红/绿),如果用python做3D图,拖动旋转角度效果更直观.这就傅立叶变换原理:将时域值拆分映射到频域,通过三角函数的叠加表示。

简单欧拉公式c语言算法,算法之_欧拉公式相关推荐

  1. c语言 算术平均滤波法_基本C语言滤波算法

    11种软件滤波方法的示例程序 假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad(); 1.限副滤波 /*  A值可根据实际情况调整 value为有效值,new ...

  2. java语言算法描述_六大java语言经典算法

    在程序员们进行编程的时候,对各种数据的处理是少不了的,java语言算法在这个时候就十分重要了.数据算法有很多种,也并不区分哪种计算机语言使用,但是有程序员们常用的java语言经典算法,下面就简单介绍一 ...

  3. C语言实现简单的RSA加解密算法

    使用c语言实现了简单的RSA加解密算法. 实验内容: 1.输入两个素数,然后生成一个随机数,计算出随机数的逆元,然后保存这些信息: 2.选择加密,则输入明文,输出密文: 3.选择解密,则输入密钥,输出 ...

  4. 03【C语言 趣味算法】(值得品味的一道题)打鱼还是晒网?结构体的简单应用。函数的应用。判断闰年的应用。求指定日期距1990年1月1日的天数。

    目录 一.指路哦 三.打鱼还是晒网 嘞? 3.1 问题描述 3.2 问题分析 3.3 算法设计 3.4 确定程序框架 3.5 求出指定日期距 1990年1月1日的天数 3.6 完整code 及结果 一 ...

  5. C语言排序算法之简单交换法排序,直接选择排序,冒泡排序

    C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 1 /*简单交换法排序 2 根据序列中两个记录键值的比较结果来 ...

  6. c语言插入排序算法_插入排序算法,流程图和C,C ++代码

    c语言插入排序算法 In the last article, we discussed about the bubble sort with algorithm, flowchart and code ...

  7. 波形包络提取与峰值提取_一个简单的波形包络提取算法

    与<一个简单的波形包络提取算法>相关的范文 2008年第03期,第41卷 通 信 技 术 Vol.41,No.03,2008 总第195期 Communications Technolog ...

  8. 【计算理论】计算复杂性 ( 阶段总结 | 计算理论内容概览 | 计算问题的有效性 | 语言与算法模型 | 可计算性与可判定性 | 可判定性与有效性 | 语言分类 ) ★

    文章目录 一.计算理论内容概览 二.计算问题的 有效性 三.语言 与 算法模型 四.可计算性 与 可判定性 五.可判定性 与 有效性 六.语言分类 一.计算理论内容概览 计算理论分为 形式语言与自动机 ...

  9. 【计算理论】可判定性 ( 通用图灵机和停机问题 | 可判定性 与 可计算性 | 语言 与 算法模型 )

    文章目录 一.通用图灵机和停机问题 二.可判定性 与 可计算性 三.语言 与 算法模型 一.通用图灵机和停机问题 利用 图灵 的结论 , 证明 有哪些 计算问题 是找不到 算法 进行判定的 ; 如 停 ...

  10. 最简单的分形图像生成算法

    本文将提供一段完整地生成一幅分形图像文件的C语言代码,并且极为简单.我相信这应该是最简单的分形图像生成算法.大部分的分形图像代码也都很短,但一有递归迭代就难以理解了.而这段代码则很好懂,并且其生成的图 ...

最新文章

  1. ICMP重定向(ICMP Redirect)
  2. 网络:TIME-WAIT
  3. Android之IPC机制
  4. 消息队列RabbitMQ入门与5种模式详解
  5. python中MySQLdb模块用法实例
  6. R语言-数据清洗-缺失值处理
  7. java 命令设计模式_Java设计模式之命令设计模式
  8. 001.DIV 标签添加滚动条
  9. 把c的char数组转换为python image的代码
  10. pcie协议_如何通过PCIE协议实现FPGA 配置?详情请戳这里!
  11. xshell4的使用经验
  12. 在全志平台调试博通的wifi驱动(类似ap6212)
  13. AlphaControls 控件 锐浪报表 Grid++Report 打印浏览显示问题解决
  14. 对于计算机系统结构,下列哪些是透明的?(计算机系统结构期末习题解析,史上最全)
  15. ado全称_JDBC、ODBC、OLE DB、ADO、ADOMD区别与联系
  16. extract($_POST, EXTR_SKIP)讲解
  17. 要玩就玩最好的棋牌游戏
  18. google instant
  19. Android状态栏微技巧,带你真正理解沉浸式模式
  20. chrome浏览器发布文章(发贴)辅助的实现思路

热门文章

  1. 如何区别测试计划和测试方案
  2. 信号越多越好?随机相对强弱指数 vs. 相对强弱指数
  3. NBIOT BC28 AT指令
  4. 2022的七夕,奉上7个精美的表白代码,同时教大家改源码快速自用
  5. Word自动目录字体过大,如何全选并修改样式
  6. linux安装gt620驱动下载,Debian6安装Nvidia GT 620显卡驱动
  7. node.js接入微信公众号开发
  8. 浏览器打开是360导航页面解决方法
  9. 生活大爆炸第五季 那些精妙的台词翻译
  10. 自动驾驶常见英文缩写