傅立叶级数展开 matlab
实验四 傅里叶级数
实验的目的 Matlab语言没有直接提供求解傅立叶(Fourier)系数与级数的现成函数。本节实验主要让
学生独立编写出傅立叶(Fourier) 级数的求解函数。进一步理解掌握利用Matlab进行级数运
算的方法和提高实验技能。
实验的基本理论与方法 1、三角函数系
4-7) 1,cosx,sinx,cos2x,sin2x,?,cosnx,sinnx,?在区间上正交,即指在三角函数系4-7)中任何不同的两个函数的乘积在区间[,,,,]
上的积分等于零。 [,,,,]
2、函数展开成傅立叶级数
设是周期为的周期函数,且能展开成三角级数: f(x)2,
,a0 4-8) f(x),,(acosnx,bsinnx),nn2n1,
其实就是要求出其中的系数和,根据三角函数系的正交性,我们可以得到它们的baii
计算公式如下:
,1 ,,afxdx()0,,,,
,1 4-9 ,)afxnxdx,()cosn,,,,
,1 ,(1,2,)n,bfxnxdx,()sinn,,,,
如果公式4-9)中的积分都存在,这时它们定出的系数叫做函数的傅a,a,b,?f(x)011立叶系数,将这些系数代入4-8)中,所得三角级数
,a0,(acosnx,bsinnx) 4-10) ,nn2n1,
叫做函数的傅立叶级数。 f(x)
3、奇函数和偶函数的傅立叶级数
当周期为的奇函数展开成傅立叶级数时,它的傅立叶系数为 f(x)2,
,,a0(n123?),,,,n,, 4-11) 2,,,bf(x)sinnxdx(n1,2,3,?)n,,0,,
当周期为的偶函数展开成傅立叶级数时,它的傅立叶系数为 f(x)2,
,2,,a,f(x)cosnxdx(n,1,2,3,?)n, 4-12) 0,,
,b,0(n,1,2,3,?)n,
以上说明,如果为奇函数,那么它的傅立叶级数是只含有正弦项的正弦级数 f(x)
,
4-13) bsinnx,nn,1如果为偶函数,那么它的傅立叶级数是只含有余弦项的余弦级数 f(x)
,a0 4-14) ,acosnx,n2n1,
4、周期为2l的周期函数的傅立叶级数
设周期为的周期函数满足收敛定理的条件,则它的傅立叶级数展开式为: f(x)2l
,anxnx,,0fxab 4-15) (),,(cos,sin),nnll2n1,其中系数为 a,bnn
,l1nx,a,f(x)cosdx,(n,0,1,2,?)n,,l,ll 4-16) ,l1n,x,b,f(x)sindx,(n,1,2,?)n,l,ll,
如果为奇函数,则有 f(x)
,nx,fxb 4-17) (),sin,nln1,
l2nx,其中系数 4-18) b,f(x)sindx(n,1,2,3,?)n,0ll
如果为偶函数,则有 f(x)
,anx,0fxa(),,cos 4-19) ,nl2n1,
l2nx,其中系数 4-20) a,f(x)sindx(n,0,1,2,?)n,0ll
实验使用的函数与命令
1、积分指令int( );
2、矩阵的点乘积;
3、了解在设计Matlab绘图时的图形标注函数及其功能。
实验指导
[,],,,例1 求函数在上的傅立叶级数。 f(x),x
解:由前文知,将一个函数展开为傅立叶级数:fx() ,a0f(x),,(acosnx,bsinnx),nn2n1,
其实就是要求出其中的系数和,根据三角函数系的正交性,我们可以得到它们的计算baii
公式如下:
,1 ,,afxdx()0,,,,
,,11 ,,(1,2,)n,afxnxdx,bfxnxdx,()cos()sinnn,,,,,,,,
这样,结合Matlab的积分命令int( )就可以计算这些系数,从而就可以进行函数的傅立
, a,…), b=(b, b,…),叶展开了。下面给出Matlab的程序,程序中先求出傅立叶系数a=(a,a01212然后利用系数写出该函数的傅立叶级数。该程序为.M文件。程序如下:
syms x;
k=3; % k为需要展开的相数
f=x; % f为需要展开的函数
a0=int(f,x,-pi,pi)/pi;
for n=1:k
a(n)=int(f*cos(n*x),x,-pi,pi)/pi; %求出傅立叶系数a=( a1, a2,…),
b(n)=int(f*sin(n*x),x,-pi,pi)/pi; %求出傅立叶系数b=(b1, b2,…)
end
for n=1:k
co(n)=cos(n*x); %傅立叶级数的余弦项
si(n)=sin(n*x); %傅立叶级数的正弦项
end
f=co.*a+si.*b;
g=0;
for n=1:k
g=f(n)+g;
end
f=a0+g %求出傅立叶级数
运行输出结果为
f =
2/3*sin(3*x)-sin(2*x)+2*sin(x) 图 4.1
当k改为5,则输出结果
f =
2/5*sin(5*x)-1/2*sin(4*x)+2/3*sin(3*x)-sin(2*x)+2*sin(x)
当k改为5,则输出结果
f =
-1/5*sin(10*x)+2/9*sin(9*x)-1/4*sin(8*x)+2/7*sin(7*x)-1/3*sin(6*x)+2/5*sin(5*x)-1/2*sin(4*x)
+2/3*sin(3*x)-sin(2*x)+2*sin(x)
为了能够直观的展示傅立叶级数的效果,将展为3、5、10项的效果图绘制出来。其M文件的Matlab代码如下,效果图为图4.1 :
x=-pi:0.01:pi;
f3=2/3*sin(3*x)-sin(2*x)+2*sin(x);
f5=2/5*sin(5*x)-1/2*sin(4*x)+2/3*sin(3*x)-sin(2*x)+2*sin(x);
f10=-1/5*sin(10*x)+2/9*sin(9*x)-1/4*sin(8*x)+2/7*sin(7*x)-1/3*sin(6*x)+2/5*sin(5*x)-1/2
*sin(4*x)+2/3*sin(3*x)-sin(2*x)+2*sin(x); hold on
plot(x,x,'m','linewidth',2);
plot(x,f3,'r','linewidth',2);
text(2.35,1.5,'k=3\rightarrow','fontsize',14);
plot(x,f5,'-.k','linewidth',2);
text(2.0,3.1,'k=5\rightarrow','fontsize',14);
plot(x,f10,'.b');
text(2.25,3.5,'k=10\rightarrow','fontsize',14);
在实际应用中(如研究某种波动问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
,热的传导,扩散问题)中,有时还需要把定义在区间上的函数展开成正弦级数或余弦级数。解决方法如下:设函数定义在区,,0,,f(x)f(x)间上并且满足收敛定理的条件,在开区间内补充函数的定义,得到定义,,0,,(,,,0)f(x)
在上的函数,使它在上成为奇函数(或偶函数)。按这种方式拓广函数(,,,,]F(x)(,,,,)
定义域的过程称为奇延拓(或偶延拓)。然后将奇延拓(或偶延拓)后的函数展开成傅立叶级数,这个级数必定是正弦函数(或余弦函数)。再限制x在上,此时,这样便,,0,,F(x),f(x)得到的正弦函数(或余弦函数)展开式。 f(x)
例2 将函数在区间分别展开成正弦级数和余弦级数。 ,,f(x),x,10,,
先求正弦级数,为此对函数进行奇延拓。然后,利用4-11)求出代入正弦级数f(x)bn4-13),即可求得正弦级数。只要对例1 中的程序略作修改得到M文件程序代码如下: f(x)
syms x;
k=6; % k为需要展开的相数
f=x+1; % f为需要展开的函数
for n=1:k
b(n)=2*int(f*sin(n*x),x,0,pi)/pi; %求出傅立叶系数b=(b1, b2,…)
end
for n=1:k
si(n)=sin(n*x); %傅立叶级数的正弦项
end
f=si.*b;
g=0;
for n=1:k
g=f(n)+g;
end
f=g %求出傅立叶级数
输出结果为
f =
-1/3*sin(6*x)+sin(5*x)*(2/5*pi+4/5)/pi-1/2*sin(4*x)+sin(3*x)*(2/3*pi+4/3)/pi-sin(2*x)+sin(x)*(
2*pi+4)/pi
对于求余弦级数,为此对函数进行奇延拓。然后,利用4-12)求出代入正弦级f(x)an数4-14),即可求得余弦级数。同正弦级数类似,M文件程序代码如下: f(x)
syms x;
k=6; % k为需要展开的相数
f=x+1; % f为需要展开的函数
a0=int(f,x,0,pi)/pi;
for n=1:k
a(n)=2*int(f*cos(n*x),x,0,pi)/pi; %求出傅立叶系数a=( a1, a2,…),
end
for n=1:k
co(n)=cos(n*x); %傅立叶级数的余弦项
end
f=co.*a;
g=0;
for n=1:k
g=f(n)+g;
end
f=a0+g %求出傅立叶级数
输出结果为
f =
(1/2*pi^2+pi)/pi-4/25*cos(5*x)/pi-4/9*cos(3*x)/pi-4*cos(x)/pi
为了能够直观的展示傅立叶级数的效果,将展为6项的正弦级数和余弦级数效果图绘制出来。其M文件的Matlab代码如下,效果图为图 4.2:
x=0:0.01:pi;
fsin=-1/3*sin(6*x)+sin(5*x)*(2/5*pi+4/5)/pi-1/2*sin(4*x)+sin(3*x)*(2/3*pi+4/3)/pi-sin(2*x
)+sin(x)*(2*pi+4)/pi;
fcos=(1/2*pi^2+pi)/pi-4/25*cos(5*x)/pi-4/9*cos(3*x)/pi-4*cos(x)/pi;
hold on
plot(x,x+1,'m','linewidth',1);
plot(x,fsin,'r','linewidth',2);
text(2.35,1.5,'k=3\rightarrow','fontsize',14);
plot(x,fcos,'-k','linewidth',1);
text(2.0,3.1,'k=5\rightarrow','fontsize',14);
图 4.2
例3 设的周期为4的周期函数,它在的
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
达式为 f(x)[,2,2)
0,,2,x,0, f(x),(常数c,0),c,0,x,2,
将展开成傅立叶级数。 f(x)
解:该函数周期为4,即,仿照例1利用公式4-16)求出级数的系数,然后代入l,2
4-15)即可求出傅立叶级数。M文件的程序代码如下: syms x;
k=6; % k为需要展开的相数
f=x; % f为需要展开的函数
a0=int(0,x,-2,0)/2+int(3,x,0,2)/2;
for n=1:k
a(n)=int(3*cos(n*pi*x/2),x,0,2)/2; %求出傅立叶系数a=( a1, a2,…),
b(n)=int(3*sin(n*pi*x/2),x,0,2)/2; %求出傅立叶系数b=(b1, b2,…)
end
for n=1:k
co(n)=cos(n*pi*x/2); %傅立叶级数的余弦项
si(n)=sin(n*pi*x/2); %傅立叶级数的正弦项 end
f=co.*a+si.*b;
g=0;
for n=1:k
g=f(n)+g;
end
f=a0+g %求出傅立叶级数
运行程序输出结果如下:
f =
1/2*c+2/5*c/pi*sin(5/2*pi*x)+2/3*c/pi*sin(3/2*pi*x)+2*c/pi*sin(1/2*pi*x)
实验内容与练习 1、下列周期函数的周期为,试将展开成傅立叶级数,如果在f(x)f(x)f(x)2,
上的表达式为: [,,,,]
21); f(x),3x,1(,,,x,,)
x2); f(x),e(,,,x,,)
x3); f(x),2sin(,,,x,,)3
x4); f(x),cos(,,,x,,)2
,,,,,x,x0,5); ,f(x),,,x,0x,,
x,,,,,e,x06)。 ,f(x),,,1,0x,,
,,x3、将函数展开成正弦级数。 f(x),(0,x,,)2
24、将函数分别展开成正弦级数和余弦级数。 f(x),2x(0,x,,)
1125、将周期函数 展开成傅立叶级数。 f(x)f(x),1,x(,,x,)22
26、将函数分别展开成正弦级数和余弦级数。 f(x),x(0,x,2)