简单欧拉公式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语言算法)