matlab 怎么进行傅里叶级数展开?请问这个函数是怎么进行傅里叶级数展开的?syms x;f=(x-abs(x))/2;xx=-pi:.01:pi;yy=subs(f,x,xx);plot(xx,yy,'-'),hold onfor n=4:4:20 [a,b,f1]=f_series(f,x,n); y1=subs(f1,x,xx); pl
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 17:49:55
matlab 怎么进行傅里叶级数展开?请问这个函数是怎么进行傅里叶级数展开的?syms x;f=(x-abs(x))/2;xx=-pi:.01:pi;yy=subs(f,x,xx);plot(xx,yy,'-'),hold onfor n=4:4:20 [a,b,f1]=f_series(f,x,n); y1=subs(f1,x,xx); pl
matlab 怎么进行傅里叶级数展开?
请问这个函数是怎么进行傅里叶级数展开的?
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
这个程序又为什么运行不出来?
matlab 怎么进行傅里叶级数展开?请问这个函数是怎么进行傅里叶级数展开的?syms x;f=(x-abs(x))/2;xx=-pi:.01:pi;yy=subs(f,x,xx);plot(xx,yy,'-'),hold onfor n=4:4:20 [a,b,f1]=f_series(f,x,n); y1=subs(f1,x,xx); pl
你上面的程序,f_series函数是否有定义?若无定义,或定义不准确都有可能出错
将傅里叶系数的计算(输出a0,an,bn)以及函数图像的绘制编到m文件中
function [a0,an,bn]=fly(f,l,k)
%f为一个周期内的分段函数(分两段,对分两段以上的函数可类似处理)
%2l为周期
%k为近似展开项数,k≥1
%计算傅里叶系数
syms x n L
a0=1/L*int(f(1),-L,0)+1/L*int(f(2),0,L);
an=1/L*int(f(1)*cos(n*pi*x/L),-L,0)+1/L*int(f(2)*cos(n*pi*x/L),0,L);
bn=1/L*int(f(1)*sin(n*pi*x/L),-L,0)+1/L*int(f(2)*sin(n*pi*x/L),0,L);
%选择作图步长p
if k>=4
p=fix(k/4);
else
p=1;
end
%绘制4个近似子图
for i=1:4
f=a0/2+symsum(an*cos(n*pi*x/L)+bn*sin(n*pi*x/L),n,1,i*p);
f=subs(f,L,l);
subplot(2,2,i),ezplot(f,[-3*l,3*l]),title(['n=',int2str(i*p)])
end
输入:
f=sym('[x,0]');
[a0,an,bn]=fly(f,pi,32)
输出:
a0 =
-1/2*L
an =
-L*(cos(n*pi)+sin(n*pi)*n*pi-1)/n^2/pi^2
bn =
-L*(-sin(n*pi)+cos(n*pi)*n*pi)/n^2/pi^2
显然以上结果并未化简(例如,sin(n*pi)=0)
有了傅里叶系数,利用公式f(x)=a0/2+∑{1,∞}[an*cos(n*pi*x/L)+bn*sin(n*pi*x/L)],即得到展开式
输出图像: