第5章 CHAPTER 5 傅里叶级数 第3章讨论了幂级数,幂级数是函数项级数中最基本的一类。当一个函数满足一定条件时,可以将其写为幂级数展开式。一个函数的幂级数展开式只依赖函数在展开点处的各阶导数,这是Taylor级数的优点。但从另一方面看,这又是它的缺点,因为求任意阶导数并不容易,而且许多函数难以满足这样严格的条件。本章将讨论另外一类无穷项级数,即傅里叶级数,该级数的展开不需要这么严格的条件。本章首先介绍傅里叶级数的基本概念,然后讨论定义在有限区间上函数的傅里叶展开,最后运用MATLAB实现傅里叶级数的可视化。 满足一定条件的函数可以表示为某个基本函数族叠加的表达式,最常见的是傅里叶正弦函数族和傅里叶余弦函数族。在第7章的分离变量法中,将会用到这两类级数。第8章则会介绍其他基本函数族,并定义广义傅里叶级数,这种无穷多项叠加的级数在很多重要的经典数理边值问题中都会用到。 学习目标: ■掌握周期函数傅里叶级数的定义、实际意义及收敛性; ■掌握有限区间上函数在给定边界条件下的傅里叶级数展开; ■了解复数形式的傅里叶级数; ■了解MATLAB在傅里叶级数可视化中的应用。 傅里叶 级数1 5.1周期函数的傅里叶展开(Fourier expansion of periodic function) 本节首先介绍周期函数傅里叶级数的定义,然后介绍傅里叶系数的计算及傅里叶级数展开的实际意义,最后讨论其收敛性。 5.1.1傅里叶级数的定义(definition of Fourier series) 假设函数f(x)的周期为2l,即 f(x+2l)=f(x)(5.1.1) 则可取三角函数族(a family of trigonometric functions) 1,cosπxl,cos2πxl,…,coskπxl,… sinπxl,sin2πxl,…,sinkπxl,… (5.1.2) 作为基本函数族(basic function family),将f(x)展开为傅里叶级数 f(x)=a0+∑∞k=1akcoskπxl+bksinkπxl (5.1.3) 式(5.1.3)称为周期函数f(x)的傅里叶级数展开式(Fourier series expansion)。其中,系数a0,ak,bk(k=1,2,3,…)称为该傅里叶级数的傅里叶系数(Fourier coefficients)。 在以上的傅里叶级数展开式中,三角函数族是正交的(orthogonal),也就是说,其中任意两个函数的乘积在一个周期(-l,l)上的积分等于0,即 ∫l-l1·coskπxldx=0,k=1,2,3,… ∫l-l1·sinkπxldx=0,k=1,2,3,… ∫l-lcoskπxl·cosnπxldx=0,k≠n ∫l-lcoskπxl·sinnπxldx=0,k=1,2,3,… ∫l-lsinkπxl·sinnπxldx=0,k≠n (5.1.4) 利用三角函数族的正交性可以求得周期函数f(x)傅里叶级数展开式的傅里叶系数。比如,对式(5.1.3)两侧求(-l,l)上的积分,有 ∫l-lf(x)dx=∫l-la0dx+∫l-l∑∞k=1akcoskπxl+bksinkπxldx(5.1.5) 右侧第二项交换积分和求和的顺序,有 ∫l-lf(x)dx=∫l-la0dx+∑∞k=1ak∫l-lcoskπxldx+bk∫l-lsinkπxldx(5.1.6) 由正交性有 ∫l-lf(x)dx=2l·a0(5.1.7) 即 a0=12l∫l-lf(x)dx(5.1.8) 对式(5.1.3)两侧乘以cosnπxl,并在区间(-l,l)上积分有 ∫l-lf(x)cosnπxldx=∫l-la0cosnπxldx+∫l-lcosnπxl∑∞k=1akcoskπxl+bksinkπxldx (5.1.9) 由正交性可知,右侧第一项为0,第二项交换积分和求和的顺序,并运用正交性有 ∫l-lf(x)cosnπxldx=an∫l-lcos2nπxldx(5.1.10) 可求得 an=1l∫l-lf(x)cosnπxldx(5.1.11) 同理,对式(5.1.3)两侧乘以sinnπxl,可求得 bn=1l∫l-lf(x)sinnπxldx(5.1.12) 整理系数的计算公式有 a0=12l∫l-lf(x)dx ak=1l∫l-lf(x)coskπxldx bk=1l∫l-lf(x)sinkπxldx(5.1.13) 以上公式需要牢记并熟练应用。 5.1.2傅里叶级数的实际意义(practical meaning of Fourier series) 那么傅里叶级数的实际意义是什么呢?观察傅里叶级数的形式可以看出,任何周期信号都可以分解为无穷多项不同频率正弦/余弦信号的叠加。任何非周期函数都可以看成周期为∞的周期函数,那么任何连续测量的时序或信号都可以表示为不同频率正弦波信号的无限叠加。根据该原理创立的傅里叶变换算法利用测量到的原始信号,可以分析信号中不同正弦波信号的频率、振幅和相位。这是数字信号处理领域中非常重要的一种算法,将在信号与系统课程中学习。 5.1.3傅里叶级数的收敛性(convergence of Fourier series) 傅里叶级数是无穷级数,需要讨论其收敛性。 狄利克雷定理(theorem of Dirichlet)若函数f(x)处处连续,或在每个周期内只有有限个第一类间断点(左极限及右极限都存在); 函数在每个周期内只有有限个极值点,则级数收敛,且在收敛点有 a0+∑∞k=1akcoskπxl+bksinkπxl=f(x) (5.1.14) 在间断点有 a0+∑∞k=1akcoskπxl+bksinkπxl=12[f(x+0)+f(x-0)](5.1.15) 图5.1矩形波 例5.1假设有矩形波,函数曲线如图5.1所示,即 u(t)=-1,-π≤t<0 1,0≤t<π 将该函数展开为傅里叶级数。 解: 函数满足狄利克雷充分条件,在连续点级数收敛于f(x),在不连续点x=kπ(k=0,±1,±2,…),级数收敛于 f(π-0)+f(π+0)2=1+(-1)2=0 代入式(5.1.13),有 a0=12π∫π-πf(t)dt=0 ak=1π∫π-πf(t)coskπtπdt=0 bk=2π∫π0sinkπtπdt=2·1-(-1)kkπ=4(2n+1)π,k=2n+1(n=0,1,2,…) 0,k=2n(n=0,1,2,…) 因此,矩形波的傅里叶级数展开式为 u(t)=∑∞n=04(2n+1)πsin(2n+1)t 也就是说,矩形波可以展开为无穷多个不同频率正弦波的叠加 4πsint,4π·13sin3t,4π·15sin5t,4π·17sin7t,… 绘制N项(N=1,N=2,N=3,N=4,N=6,N=11)级数和并与矩形波对比,如图5.2所示。 图5.2矩形波的傅里叶逼近 图5.2(续) 可以看出,项数越多,傅里叶级数越逼近矩形波,这提供了一个实验室内运用正弦波发生器生成矩形波的方法。 傅里叶 级数2 5.2奇函数及偶函数的傅里叶展开(Fourier expansion of odd and even function) 5.1节介绍了形如 f(x)=a0+∑∞k=1akcoskπxl+bksinkπxl 的傅里叶级数。一般来说,一个周期函数的傅里叶级数既含有正弦项,又含有余弦项。但也有一些函数的傅里叶级数只含有正弦项或者只含有常数项和余弦项。观察系数的计算公式 a0=12l∫l-lf(x)dx ak=1l∫l-lf(x)coskπxldx bk=1l∫l-lf(x)sinkπxldx 当周期函数为奇函数时,ak=0(k=0,1,2,…),傅里叶级数只有正弦项; 当周期函数为偶函数时,bk=0(k=1,2,3,…),傅里叶级数只有余弦项。下面给出傅里叶余弦级数和傅里叶正弦级数的定义。 傅里叶正弦级数若周期函数f(x)是奇函数,则展开式为 f(x)=∑∞k=1bksinkπxl(5.2.1) 式(5.2.1)称为傅里叶正弦级数(Fourier sine series),由对称性可得展开系数 bk=2l∫l0f(x)sinkπxldx(5.2.2) 傅里叶余弦级数若周期函数f(x)是偶函数,则展开式为 f(x)=a0+∑∞k=1akcoskπxl(5.2.3) 式(5.2.3)称为傅里叶余弦级数(Fourier cosine series),由对称性可得展开系数 a0=1l∫l0f(x)dx(5.2.4) ak=2l∫l0f(x)coskπxldx(5.2.5) 容易验证,傅里叶正弦级数x=0,x=l均为0,而傅里叶余弦级数的导数在x=0,x=l处为0。 例5.2如图5.3所示,f(x)是周期为2π的周期函数,它在[-π,π]上的表达式为f(x)=x,将f(x)展开成傅里叶级数。 图5.3周期为2π的函数f(x) 解: 如图5.3所示的函数满足狄利克雷条件,级数在连续点收敛于f(x),在不连续点x=(2k+1)π(k=0,±1,±2,…)收敛于 f(π-0)+f(π+0)2=π+(-π)2=0 函数f(x)是以2π为周期的奇函数,因此有 an=0,n=0,1,2,… bn=2π∫π0f(x)sinnxdx=2π∫π0xsinnxdx =2π-xcosnxn+sinnxn2π0=-2ncosnπ=2n(-1)n+1,n=1,2,3,… 因此,函数可展开为傅里叶正弦级数 f(x)=2sinx-12sin2x+13sin3x-… =2∑∞n=1(-1)n+1nsinnx,-∞<x<+∞且x≠±π,±3π,… 图5.4给出了前5项级数和y=2sinx-12sin2x+13sin3x-14sin4x+15sin5x与原函数在一个周期内的曲线。 图5.4一个周期内5项级数和与函数f(x)对比 5.3定义在有界区间上函数的傅里叶展开(Fourier expansion of functions defined on an interval) 对于定义在有限区间上的非周期函数f(x),可以采用延拓的方法,使其成为某个周期函数F(x),然后将周期函数展开为傅里叶级数。因为非周期函数f(x)属于延拓后周期函数F(x)的一部分,在定义域内傅里叶级数可以表示该函数。对于定义在(0,l)上的函数,可以运用多种方法将其延拓为周期函数,如图5.5所示。图5.5(a)中,首先将函数延拓为(-l,l)上的奇函数,令 F(x)=f(x),0<x≤l 0,x=0 -f(-x),-l<x<0 (5.3.1) 然后以2l为周期延拓为周期函数,称作奇延拓。延拓后的周期函数f(x)可以展开为傅里叶正弦级数 f(x)=∑∞n=1bnsinnπxl, 0≤x≤l (5.3.2) 图5.5(b)则先将函数延拓为(-l,l)上的偶函数,即 F(x)=f(x),0≤x≤l f(-x),-l<x<0(5.3.3) 然后以2l为周期延拓为周期函数,称作偶延拓。延拓后的周期函数f(x)可以展开为傅里叶余弦级数 f(x)=a0+∑∞n=1ancosnπxl,0≤x≤l(5.3.4) 这两种方法是典型的延拓方法,分别称作奇延拓和偶延拓。当然也可以如图5.5(c)所示,做周期为4l的偶延拓。 图5.5几种延拓方法 从以上分析可以看出,对于定义在有限区间上的函数,延拓周期的选择是比较灵活的,因此其傅里叶级数不是唯一的。可以根据具体问题选择周期将定义在有限区间上的函数展开为特定的傅里叶级数,该傅里叶级数在函数的定义域上与原函数相等,其他部分无意义,这部分内容将在第7章的分离变量法中用到。 例5.3设f(x)=x+x2,x∈(-π,π),试将其展开成傅里叶级数,并验证 1+122+132+…+1n2+…=π26 解: 将函数延拓为周期函数,如图5.6所示,该函数既非偶函数也非奇函数,因此需要计算所有傅里叶系数,有 a0=12π∫π-πf(x)dx=π23 ak=1π∫π-π(x+x2)coskxdx=1π∫π-πx2coskxdx=4k2coskπ=4k2-1k bk=1π∫π-π(x+x2)sinkxdx=1π∫π-πxsinkxdx=-2kcoskπ=2k-1k+1 图5.6函数图 即函数f(x)可以展开为傅里叶级数 f(x)=π23+∑∞k=14k2(-1)kcoskx+2k(-1)k+1sinkx 在非连续点x=π处,该级数收敛于 f(π-0)+f(π+0)2=π+π2-π+π22=π2 即 f(x)=π23+∑∞k=14k2(-1)kcoskπ+2k(-1)k+1sinkπ=π2 整理得 π23+4∑∞k=11k2=π2 因此 ∑∞k=11k2=1+122+132+…=π26 得证。 例5.4将函数f(x)=x2在(0,1)展开为傅里叶正弦级数,并指出在x=0,x=1,x=12点处级数的和。 解: 将f(x)做奇延拓,然后以2为周期做周期延拓,如图5.7所示。 图5.7函数f(x)=x2奇延拓为周期函数 傅里叶系数 an=0,n=0,1,2,3,… bn=2∫10x2sin(nπx)dx=(-1)n-12nπ-4n3π3 因此,原函数展开为傅里叶正弦级数 f(x)=x2=∑∞n=1(-1)n-12nπ-4n3π3sin(nπx),0<x<1 于是,在区间(0,1)的连续点上级数S(x)=∑∞n=1(-1)n-12nπ-4n3π3sin(nπx)收敛于f(x)=x2,即有 S(x)x=0=f(0)=0,S(x)x=12=f12=14 在间断点上则收敛于 S(x)x=1=f(1-0)+f(1+0)2=1+(-1)2=0 5.4复数形式的傅里叶级数(Fourier series in complex form) 复数形式的傅里叶级数取一系列复指数函数 …,e-ikπxl,…,e-i2πxl,e-iπxl,1,eiπxl,ei2πxl,…,eikπxl,… (5.4.1) 作为基本函数族,可以将周期函数f(x)展开为复数形式的傅里叶级数 f(x)=∑∞k=-∞Ckeikπxl(5.4.2) 复指数函数构成的基本函数族满足正交性,任意一项与另外一项的共轭乘积在区间(-l,l)上积分为0,即 ∫l-leikπxl·e-inπxl=0,n≠k (5.4.3) 利用正交性可以得到复数形式傅里叶级数的傅里叶系数 Ck=12l∫l-lf(x)eikπxl*dx=12l∫l-lf(x)e-ikπxldx(5.4.4) 式中,*代表复数的共轭。由傅里叶系数的计算公式可以看出,尽管f(x)是实函数,其傅里叶系数却可能是复数,且满足C-k=C*k。 式(5.4.2)的实际意义是: 一个周期为2l的函数f(x)可以分解为复振幅为Cn、频率为nπl的复简谐波的叠加。nπl称为谱点,所有谱点的集合称为谱。可以看出,周期函数f(x)的谱是离散的。 事实上,可以由5.1节的傅里叶级数推导得到复数形式的傅里叶级数。将欧拉公式 cosx=12(eix+e-ix) sinx=12i(eix-e-ix) (5.4.5) 代入傅里叶级数式(5.1.3)有 f(x)=a0+∑∞k=1ak2eikπxl+e-ikπxl-bki2eikπxl-e-ikπxl (5.4.6) 整理后得到 f(x)=a0+∑∞k=1ak-ibk2eikπxl+ak+ibk2e-ikπxl(5.4.7) 令 C0=a0,Ck=ak-ibk2,C-k=ak+ibk2(k=1,2,3,…) (5.4.8) 式(5.4.7)可写为 f(x)=∑∞k=-∞Ckeikπxl(5.4.9) 将式(5.1.13)代入式(5.4.8)可得 Ck=ak-ibk2=12l∫l-lf(x)coskπxldx-i2l∫l-lf(x)sinkπxldx =12l∫l-lf(x)e-ikπxldx (5.4.10) C-k=ak+ibk2=12l∫l-lf(x)e-i-kπxldx (5.4.11) C0=a0=12l∫l-lf(x)dx (5.4.12) 归纳后得到傅里叶系数的计算公式 Ck=12l∫l-lf(x)e-ikπxldx (5.4.13) 可以看出有 Ck=a2k+b2k2(5.4.14) 5.5基于MATLAB的傅里叶级数可视化(visualization of Fourier series based on MATLAB) 运用MATLAB可以实现傅里叶级数可视化,常用的MATLAB函数有: square(x,duty); %产生一个幅度为1、周期为2π、占空比为duty的矩形波 sawtooth(t) %产生一个幅度为1、周期为2π的锯齿波 x=linspace(X1,X2,n) %在X1和X2间生成n个线性分布的数据 stem(X,Y) %在X的指定点处画出数据序列Y 运用MATLAB可以绘制前N项傅里叶级数和,并与周期函数曲线对比,代码如下: x=linspace(-2*pi,2*pi,100); %自变量x的范围(-2π,-2π) N=10; %前N项傅里叶级数和 A=1; %矩形波幅值 u=A*square(x); S=0; %给级数和赋初值0 for n=1:N S=S+ 2*A*(1-cos(pi*n))/(n*pi)*sin(n*x); %N项级数和 end plot(x,u,x,S); 矩形波和前N项傅里叶级数和对比如图5.8所示。 图5.8矩形波和前N项傅里叶级数和曲线 运用函数stem可以画出周期函数的幅度谱,代码如下: clc;clear axis([-3 3 -1.2 1.2]) %x轴的最大和最小值,y轴的最大和最小值 Nf=20; i=1:1:Nf; %前20项级数的幅度 A=1; bn= 2*A.*(1-cos(pi*i))./(i*pi); %级数的幅值 cn= abs(bn); %求绝对值 figure; stem(i,cn); %在每个指定点处画出幅度序列cn title('幅度频谱'); 幅度频谱如图5.9所示。显然,周期函数的谱为离散谱。 图5.9矩形波的幅度频谱 第5章习题 1. 将下列函数展开为傅里叶级数。 (1) 在一个周期(-π,π)上,f(x)=0,x∈(-π,0) x,x∈(0,π); (2) 在一个周期(-π,π)上,f(x)=sinx。 2. 规定f(x)定义区间边界上为0,将下列函数展开为傅里叶级数。 (1) f(x)=x,x∈(0,π); (2) f(x)=x3,x∈(0,π); (3) f(x)=x(π2-x2),x∈(0,π)。 3. 规定函数f(x)在定义区间的边界上f′(x)为0,将其展开为傅里叶级数。 (1) f(x)=sinx,x∈(0,π); (2) f(x)=x,x∈(0,π)。 4. 使用整流电路可以将交流电压U(t)=U0sinωt变为直流电压ω=2πT。 (1) 经过半波整流成为 Uh(t)=0,t∈-T2,0 U0sinωt,t∈0,T2 (2) 经过全波整流成为Uw(t)=U0sinωt; 试分别将两种情况下的整流信号展开为傅里叶级数,并运用MATLAB绘制其整流后的幅度频谱。 5. 已知周期为2π的某函数,在一个周期上的表达式为f(x)=x2,x∈(-π,π),试将其展开为傅里叶级数,并由此证明1+124+134+144+…=π490。