用Python学《微积分B》(Fourier级数)
来源:互联网 发布:域名ip隐藏 编辑:程序博客网 时间:2024/06/02 23:21
除了“幂级数”,另一类非常重要的函数项级数级数就是“三角(函数)级数”(trigonometric series)。《微积分B》第8-6节主要介绍:什么是三角级数?三角函数系的正交性?三角级数与Fourier级数的关系?函数如何进行Fourier级数展开?Fourier级数的收敛条件?正弦级数(余弦级数)与函数奇偶性的关系?一般周期函数的Fourier级数展开?
一、三角级数
顾名思义,三角(函数)级数就是被加项为sine或cosine函数的一种函数项级数。从几何上来理解就是无穷多条sine或cosine曲线的叠加。
1,正弦函数
sine函数是一种常见而简单的周期函数,典型的就是描述简谐振动(simple harmonic oscillation)的函数:
其中,周期
2,正弦级数
对于比较复杂的周期函数,我们按照幂级数展开的思想,使用正项函数展开如下:
注:幂级数展开式中的项是 x 的幂,即
3,三角级数
对上面的正弦级数进行如下变换
对常数项进行换元:
其中,
换元后可得
这就是“三角级数”
令
二、三角函数系的正交性
1,三角函数系
三角函数系简单来说就是构成三角级数的各个基本项,如下:
对比幂级数的基本项
其实也很好理解,只不过三角函数系用倍角取代幂。此外,
2,正交性
三角函数系的正交性(trigonometric orthogonality)指的就是上述三角函数基本项中的任意不同的两项的乘积在对称区间
此外,任意相同两项的乘积在对称区间
注1:两个函数 f(x) 和 g(x) 在区间
注2:三角函数系正交公式的证明要到了以下两个定积分,可以从面积的角度来直观地理解 —— x轴上方和x轴下方的面积相互抵消
三、Fourier级数
幂级数的展开是借助于“Taylor公式”,而三角级数的展开则需要借助“Fourier级数”,不同的是“Taylor级数”是唯一的幂级数展开式,而“Fourier级数”不一定是唯一的三角级数展开式。(???)
回顾“Taylor公式”的推导过程,先假设函数f(x)可以展开成一个多项式:
然后通过对上式在
同样地,也可以这样来确定“Fourier级数”。
1,假设
设f(x)是周期为
注意这个假设的两个条件 —— 周期函数和区间,后面将对这两个条件进行扩展。
2,逐项积分,求各个系数
有趣的是,“Taylor公式”推导时是求导,这里是积分。三角函数积分,很容易想到要利用“三角函数系的正交性”来简化运算。
1)第一次积分
根据三角函数系的正交性,很明显,后面部分的积分都为零,故有
2)求
根据三角函数系的正交性,消去积分为零的项,故有
3)同理可求
此外,需要注意的是,当 n = 0 时,
3,总结和扩展
想象一下,如果一个函数既可以展开成幂级数,也可以展开成Fourier级数,那么这两种展开式有没有什么联系呢?
答案是:有的!这就要用到Euler公式。
将
可得
代入Euler公式
写成和式
这也是“三角级数”,事实上,它是“复Fourier级数”
四、奇拓展与偶拓展
1,正弦级数与余弦级数
上面已推导:通过积分的方法,可以求出Fourier级数的各个系数
仔细观察这个两个公式,你会得到两个有趣的发现:
1)如果f(x)为奇函数,
2)如果f(x)为偶函数,
也就是说:f(x)为奇函数时,它的Fourier级数中只剩下正弦项,即“正弦级数”;f(x)为偶函数时,它的Fourier级数中只剩下余弦项,即“余弦级数”。
2,周期拓展
前面我们在推导Fourier级数时,作了两个假设,即“设f(x)是周期为
先看一个简单的:f(x)是区间
我们回想一下函数项级数的几何意义 —— “无穷多条曲线叠加”,如下图。很明显,它在每一小段(区间)内,还是“无穷多条曲线小段的叠加”。
%matplotlib inlineimport numpy as npimport matplotlib.pyplot as pltx = np.linspace(-3 * np.pi, 3 * np.pi, 1024)y0 = 0.5 * np.ones(x.size) y1 = 0.673 * np.cos(x);y2 = -0.212 * np.cos(3 * x)y3 = 0.127 * np.cos(5 * x)y = y0 + y1 + y2 + y3plt.plot(x, y0, 'g:')plt.plot(x, y1, 'y:')plt.plot(x, y2, 'm:')plt.plot(x, y3, 'c:')plt.plot(x, y, 'r')plt.show()
逆向思维一下:我想像有一个周期为
换句话说,f(x)也可以展开成与周期函数g(x)相同的Fourier级数,只是展开后再截取,即把区间限定在
3,半周期
再深入一步:f(x)只是是区间
很简单,我们再进行周期拓展之前,先进行一次对称区间的扩展 —— 在区间
需要注意的是:生成镜像的方法有两种 —— 奇函数镜像和偶函数镜像。举个例子来说明吧。
例:
这个函数可以有“正弦级数展开”(奇拓展)和“余弦级数展开”(偶拓展)两种Fourier级数展开式,如下图
%matplotlib inlineimport numpy as npimport matplotlib.pyplot as pltx0 = np.arange(-3 * np.pi, -np.pi, 0.01)x1 = np.arange(-np.pi, np.pi, 0.01)x2 = np.arange(np.pi, 3 * np.pi, 0.01)y0 = x0 + 2 * np.piy1 = x1y2 = x2 - 2 * np.pit = np.array([-3 * np.pi, -2 * np.pi, -np.pi, -np.pi, 0, np.pi, np.pi, 2 * np.pi, 3 *np.pi])y = np.array([-np.pi, 0, np.pi, -np.pi, 0, np.pi, -np.pi, 0, np.pi])fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(9, 4))axes[0].plot(x0,y0, 'g')axes[0].plot(x1,y1, 'g')axes[0].plot(x2,y2, 'g')axes[0].plot(t, y, 'ko', markerfacecolor='none')axes[0].grid()axes[1].plot(x0,abs(y0), 'g')axes[1].plot(x1,abs(y1), 'g')axes[1].plot(x2,abs(y2), 'g')axes[1].plot(t, abs(y), 'ko', markerfacecolor='none')axes[1].grid()plt.show()
如上图所示,左边是奇拓展,右边是偶拓展。
1)正弦级数展开
2)余弦级数展开
五、一般周期函数的Fourier级数
前面我们在推导Fourier级数时,作了两个假设,即“设f(x)是周期为
1,周期变换
前面对于非周期函数我们用的方法是“周期拓展”,现在对于一般周期,我们用“周期换元” —— 它本质上是一种坐标系变换。
则有
2,新的Fourier系数
将
六、Dirichlet收敛定理
Dirichlet收敛定理是一个关于Fourier级数收敛性判断的充分条件。内容如下:
f(x)在
1)连续点
2)间断点
注1:这里说的是点收敛,不是一致收敛
注2:这个收敛的条件比幂级数收敛的条件宽泛得多。
- 用Python学《微积分B》(Fourier级数)
- 用Python学《微积分B》(常数项级数)
- 用Python学《微积分B》(函数项级数)
- 用Python学《微积分B》(微积分应用)
- 用Python学《微积分B》(序)
- 用Python学《微积分B》(微分方程)
- 用Python学《微积分B》(Unit Test 1)
- 用Python学《微积分B》(Unit Test 2)
- 用Python学《微积分B》(Taylor公式与曲线拟合)
- 用Python学《微积分B》(Unit Test 3)
- 用Python学《微积分B》(不定积分的概念)
- 用Python学《微积分B》(换元法与分部积分)
- 用Python学《微积分B》(定积分)
- 用Python学《微积分B》(Newton-Leibniz公式)
- 用Python学《微积分B》(反常积分)
- 用Python学《微积分B》(空间向量)
- 用Python学《微积分B》(多元函数的极限)
- 用Python学《微积分B》(多元函数的微分)
- BZOJ1007水平可见直线 (凸包)
- bootstack
- BZOJ 1477: 青蛙的约会 扩展欧几里得
- MacOS 开发
- ORA-06512: At "SYS.DBMS_XSTREAM_ADM_INTERNAL" (文档 ID 1956932.1)
- 用Python学《微积分B》(Fourier级数)
- 四种强制类型转换的总结(const_cast、static_cast、dynamic_cast、reinterpreter_cast)
- XAMPP Error: Apache shutdown unexpectedly.This may be due to a blocked port, missing dependencies...
- java设计模式-策略模式
- mount命令--linux管理磁盘分区和目录节点的强大工具
- java读取Excel
- JSP内置对象
- Qt初入门“Hello Qt!”
- 谈谈Java开发中的对象拷贝