李红艳 万钟林
【摘要】借助MATLAB的强大功能,实现Fourier级数逼近函数的模拟.通过列举的典型实例,运用MATLAB生成拟合图形,结合理论知识,进一步阐释数学软件在高数教学中的重要地位.
【关键词】函数逼近;MATLAB;Fourier级数
【中图分类号】玂173.1オ
周期为2π的函数的獸ourier级数展开 设函数f(x)的周期为2π,在[-π,π]上可积,则它的獸ourier级数展开式为f(x)~a0[]2+А啤轠]n=1(a璶玞os玭x+b璶玸in玭x)(1).其中a璶=1[]πА要π-πf(x)玞os玭x玠玿, n=0,1,2,…
b璶=1[]πА要π-πf(x)玸in玭x玠玿, n=1,2,…
狄利克雷定理(收敛定理) 设f(x)是以2π为周期的函数,如果它在[-π,π]上连续或只有有限个第一类间断点,并且至多只有有限个极值点,则獸ourier级数(1)收敛,且
(1)当x是f的连续点时,级数收敛于f;
(2)当x是f的间断点时,级数收敛于1[]2(f(x-0)+f(x+0)).
用有限的不同的n项傅立叶级数表示有间断点的函数时,在间断点附近会不可避免地出现獹ibbs现象.在某些间断点或者端点,獸ourier级数收敛到该点左右极限和的一半.
对于上述收敛定理的理论描述,学生理解起来费时费力.为了让学生对獸ourier级数展开式有一个直观的理解,下面运用数学软件MATLAB强大的计算和绘图功能,模拟Fourier级数逼近函数.首先建立MATLAB函数文件ゝ_series.m,方便做函数逼近时调用.
例1函数y=x,-π 0,0≤x<π的獸ourier级数展开式及逼近模拟. 獸ourier级数展开式-π玔]4+2[]πА啤轠]n=11[](2n-1)2玞os(2n-1)x+А啤轠]n=1(-1)﹏+1猍]n玸in玭x. 玀ATLAB程序编码 syms x;f=(x-abs(x))/2;xx=-pi:.01:pi; yy=subs(f,x,xx);plot(xx,yy,‘-),hold on for n=4∶4∶20 [a,b,f1]=f_series(f,x,n); y1=subs(f1,x,xx); plot(xx,y1,‘-.); if n==8 f1 end end 输出(1)式中玭=8的Fourier级数展开为 -1/4*pi+2/pi*cos(x)+sin(x)-1/2*sin(2*x)+2/9/pi*cos(3*x)+1/3*sin(3*x)-1/4*sin(4*x)+2/25/pi*cos(5*x)+1/5*sin(5*x)-1/6*sin(6*x)+2/49/pi*cos(7*x)+1/7*sin(7*x)-1/8*sin(8*x) 输出图形为 由生成的图形可以看出,随着n值的增大,獸ourier级数在各连续点越逼近函数值,并且在端点x=-π,x=π处獸ourier级数收敛到两端点(左、右)极限和的一半-π玔]2.这就是狄利克雷收敛定理的一个直观解释.这样学生学习獸ourier展开式不再感觉枯燥和抽象,降低了理论上的难度,同时缩短数学理论与数学应用之间的距离,培养学生的数学实践与创新能力. 例2 方波函数y=1, x≥0, -1,x<0 在[-π,π]上的獸ourier级数展开式及其逼近模拟. 獸ourier级数展开式4[]πА啤轠]n=1И玸in(2n-1)x[]2n-1. 玀ATLAB程序编码 syms x;f=abs(x)/x;;xx=-pi:pi/200:pi; xx=xx(xx~=0);xx=sort([xx,-eps,eps]); yy=subs(f,x,xx);plot(xx,yy,‘-),hold on for n=2∶6∶20 [a,b,f1]=f_series(f,x,n); y1=subs(f1,x,xx); plot(xx,y1,‘-); if n==8 f1 end end 输出图形为 输出(1)式中n=8的獸ourier级数展开为 4/pi*sin(x)+4/3/pi*sin(3*x)+4/5/pi*sin(5*x)+4/7/pi*sin(7*x) 由生成的图形可以看出,随着n值的增大,獸ourier级数在各连续点越逼近函数值,并且在端点x=-π,x=π处獸ourier级数收敛到两端点(左、右)极限和的一半0.不过在n=14时图形就可以得出较好的拟合,再增加n值也不会有太大的改善.这是獸ourier级数逼近函数所存在的一个缺陷. 例3 函数y=|x|在[-π,π]上的獸ourier级数展开式及其逼近模拟. 獸ourier级数展开式π玔]2-4[]πА啤轠]n=11[](2n-1)2玞os(2n-1)x. 玀ATLAB程序编码 syms x;f=abs(x);;xx=-pi:pi/200:pi; yy=subs(f,x,xx);plot(xx,yy,‘-),hold on for n=2∶6∶20 [a,b,f1]=f_series(f,x,n); y1=subs(f1,x,xx); plot(xx,y1,‘--); if n==8 f1 end End 输出图形为 输出(1)式中n=8的獸ourier级数展开为 1/2*pi-4/pi*cos(x)-4/9/pi*cos(3*x)-4/25/pi*cos(5*x)-4/49/pi*cos(7*x) 这一函数在[-π,π]都是连续的,因此在各点獸ourier级数都能逼近函数值.由图看,随着n增大,拟合图形几乎和原图重合. 上述通过几个典型实例探讨獸ourier级数逼近函数的MATLAB模拟,旨在借助数学软件MATLAB辅助教学,给出Fourier级数展开式的直观解释,让学生对Fourier级数不再是望而生畏,而是对该内容产生浓厚的学习兴趣,充分调动学生的学习积极性,从而提高教学效果,进而培养学生的数学应用与创新能力.