天天看点

算法之_欧拉公式

1.  引子

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

2.  泰勒展开

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

算法之_欧拉公式

其中Rn(x)是余项

3.  自然常数e

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

算法之_欧拉公式

它的含义可以通过复利来理解,假设你有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的泰勒级数展开

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

算法之_欧拉公式
算法之_欧拉公式

上图是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(对应极坐标系)

算法之_欧拉公式

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

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

虚数i是-1开方,因此有i^1=i, i^2=-1,i^3=-i,i^4=1

算法之_欧拉公式

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

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

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

算法之_欧拉公式

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

在x=0处展开

算法之_欧拉公式

9.  欧拉公式

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

算法之_欧拉公式

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

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

算法之_欧拉公式

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

算法之_欧拉公式

10.           扩展成时间的函数

算法之_欧拉公式

上图中又加入了t,把e^(ix)想成e^(iwt),t是时间,w是系数。

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

继续阅读