简单欧拉公式c语言算法,算法之_欧拉公式
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语言算法,算法之_欧拉公式相关推荐
- c语言 算术平均滤波法_基本C语言滤波算法
11种软件滤波方法的示例程序 假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad(); 1.限副滤波 /* A值可根据实际情况调整 value为有效值,new ...
- java语言算法描述_六大java语言经典算法
在程序员们进行编程的时候,对各种数据的处理是少不了的,java语言算法在这个时候就十分重要了.数据算法有很多种,也并不区分哪种计算机语言使用,但是有程序员们常用的java语言经典算法,下面就简单介绍一 ...
- C语言实现简单的RSA加解密算法
使用c语言实现了简单的RSA加解密算法. 实验内容: 1.输入两个素数,然后生成一个随机数,计算出随机数的逆元,然后保存这些信息: 2.选择加密,则输入明文,输出密文: 3.选择解密,则输入密钥,输出 ...
- 03【C语言 趣味算法】(值得品味的一道题)打鱼还是晒网?结构体的简单应用。函数的应用。判断闰年的应用。求指定日期距1990年1月1日的天数。
目录 一.指路哦 三.打鱼还是晒网 嘞? 3.1 问题描述 3.2 问题分析 3.3 算法设计 3.4 确定程序框架 3.5 求出指定日期距 1990年1月1日的天数 3.6 完整code 及结果 一 ...
- C语言排序算法之简单交换法排序,直接选择排序,冒泡排序
C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 1 /*简单交换法排序 2 根据序列中两个记录键值的比较结果来 ...
- c语言插入排序算法_插入排序算法,流程图和C,C ++代码
c语言插入排序算法 In the last article, we discussed about the bubble sort with algorithm, flowchart and code ...
- 波形包络提取与峰值提取_一个简单的波形包络提取算法
与<一个简单的波形包络提取算法>相关的范文 2008年第03期,第41卷 通 信 技 术 Vol.41,No.03,2008 总第195期 Communications Technolog ...
- 【计算理论】计算复杂性 ( 阶段总结 | 计算理论内容概览 | 计算问题的有效性 | 语言与算法模型 | 可计算性与可判定性 | 可判定性与有效性 | 语言分类 ) ★
文章目录 一.计算理论内容概览 二.计算问题的 有效性 三.语言 与 算法模型 四.可计算性 与 可判定性 五.可判定性 与 有效性 六.语言分类 一.计算理论内容概览 计算理论分为 形式语言与自动机 ...
- 【计算理论】可判定性 ( 通用图灵机和停机问题 | 可判定性 与 可计算性 | 语言 与 算法模型 )
文章目录 一.通用图灵机和停机问题 二.可判定性 与 可计算性 三.语言 与 算法模型 一.通用图灵机和停机问题 利用 图灵 的结论 , 证明 有哪些 计算问题 是找不到 算法 进行判定的 ; 如 停 ...
- 最简单的分形图像生成算法
本文将提供一段完整地生成一幅分形图像文件的C语言代码,并且极为简单.我相信这应该是最简单的分形图像生成算法.大部分的分形图像代码也都很短,但一有递归迭代就难以理解了.而这段代码则很好懂,并且其生成的图 ...
最新文章
- ICMP重定向(ICMP Redirect)
- 网络:TIME-WAIT
- Android之IPC机制
- 消息队列RabbitMQ入门与5种模式详解
- python中MySQLdb模块用法实例
- R语言-数据清洗-缺失值处理
- java 命令设计模式_Java设计模式之命令设计模式
- 001.DIV 标签添加滚动条
- 把c的char数组转换为python image的代码
- pcie协议_如何通过PCIE协议实现FPGA 配置?详情请戳这里!
- xshell4的使用经验
- 在全志平台调试博通的wifi驱动(类似ap6212)
- AlphaControls 控件 锐浪报表 Grid++Report 打印浏览显示问题解决
- 对于计算机系统结构,下列哪些是透明的?(计算机系统结构期末习题解析,史上最全)
- ado全称_JDBC、ODBC、OLE DB、ADO、ADOMD区别与联系
- extract($_POST, EXTR_SKIP)讲解
- 要玩就玩最好的棋牌游戏
- google instant
- Android状态栏微技巧,带你真正理解沉浸式模式
- chrome浏览器发布文章(发贴)辅助的实现思路