matlab 求傅里叶级数,MATLAB傅里叶级数.docx

河南工程学院

理 学 院

MATLAB(傅立叶级数的模拟)

姓名:杨标班级:信息1241学号:201211002126

实验目的: (1)用MATLAB模拟傅立叶级数 F(x)=a0/2+ 求a0,an,bn;(2)对矩形函数,三角函数求傅立叶级数;(作图)(3)绘制函数及其傅立叶逼近实验分析(1):将F(x)=a0/2+ 展开为傅立叶级数,既是求ai,bi 根据三角函数的正交性,可得:a0=;an=;bn=应用积分求解公式int源程序:clearsyms x nf=(“函数方程”) a0=int(f,x,-pi,pi)/pi an=int(f*cos(n*x),x,-pi,pi)/pibn=int(f*sin(n*x),x,-pi,pi)/pi例:求函数f(x)=x^3+5 clearsyms x nf=x^3+5a0=int(f,x,-pi,pi)/pian=int(f*cos(n*x),x,-pi,pi)/pibn=int(f*sin(n*x),x,-pi,pi)/pi运行后得:

实验分析(2):其中函数为F(X)=X,求解图像及其傅里叶逼近。 展开为傅里??级数: F(x)=a0/2+ ,先求解其中的a0,an,bn源程序:function y=fly(f,k,l)%f为要展开的函数,k为要展开的项数,l为函数半周期syms x n;a0=int(f,x,-l,l)/lan=int(f*cos(n*pi*x/l),x,-l,l)/lbn=int(f*sin(n*pi*x/l),x,-l,l)/lfor n=1:k a(n)=int(f*cos(n*pi*x/l),x,-l,l)/l; b(n)=int(f*sin(n*pi*x/l),x,-l,l)/l;endg=0;for n=1:k s=a(n)*cos(n*pi*x/l)+b(n)*sin(n*pi*x/l); g=g+s; end y=a0/2+g

依次可以求得,1,3,5,7,10次的部分和,既可以做出图像。输入:x=-pi:0.01:pif1=2*sin(x)f3=2*sin(x)-sin(2*x)+2/3*sin(3*x)f5=2*sin(x)-sin(2*x)+2/3*sin(3*x)-1/2*sin(4*x)+2/5*sin(5*x)f7=2*sin(x)-sin(2*x)+2/3*sin(3*x)-1/2*sin(4*x)+2/5*sin(5*x)-1/3*sin(6*x)+2/7*sin(7*x)f10=2*sin(x)-sin(2*x)+2/3*sin(3*x)-1/2*sin(4*x)+2/5*sin(5*x)-1/3*sin(6*x)+2/7*sin(7*x)-1/4*sin(8*x)+2/9*sin(9*x)-1/5*sin(10*x) plot(x,x,x,f1,x,f3,x,f5,x,f7,x,f10)即可得图像:实验分析(3):求以2π为周期的周期函数函数F(x)=(-1,x<0;1,x>0)的傅里叶系数展开,及逼近(作图)源程序:[A,B,y]=fseries(f,x,n,a,b)f为待展开函数,x为自变量;n为展开项数;[a,b]为展开区间;A,B为傅里叶系数;y为返回的展开式(a)function [A,B,F]=fseries(f,x,n,a,b)if nargin==3, a=-pi; b=pi; end %若输入为3个参数表示f(x)在[-pi,pi]内展开L=(b-a)/2;A=int(f,x,-L,L)/L; %f(x)在[-L,L]内积分B=[]; F=A/2;for i=1:n an=int(f*cos(i*pi*x/L),x,-L,L)/L; %积分求系数an bn=int(f*sin(i*pi*x/L),x,-L,L)/L; %积分求系数bn A=[A,an]; %记录所有an B=[B,bn]; %记录所有bn F=F+an*cos(i*pi*x/L)+bn*sin(i*pi*x/L); %得到n阶傅里叶展开式end(b)syms x;f=abs(x)/x; %给出待展开函数xx=[-p

你可能感兴趣的:(matlab,求傅里叶级数)