首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确定函数的傅里叶级数的绘制

确定函数的傅里叶级数的绘制
EN

Stack Overflow用户
提问于 2018-11-05 11:08:41
回答 1查看 232关注 0票数 1
代码语言:javascript
复制
a=[0,pi/2,pi/2,pi];
b=[0,-1,0,0];
plot(a,b)
hold on
n=50;
ao=-pi/4;
T=[0,pi,0,1];
for i=1:length(T)
    t=linspace(a(i),b(i));
end
suma=0;
for i=1:n 
    bn=cos(pi*i)/2/i;
    an=(1-cos(pi*i))/4/(i)^2;
    suma=suma+(bn.*sin(2.*i.*t))+(an.*cos(2.*i.*t));
end
series=ao/2+suma;
plot(t,series)

我需要绘制两个函数:确定函数和它的Fourier级数,但是我在绘制Fourier函数时有一些问题,它和第一个函数没有结合。我可以猜到tT中的问题,但不知道如何解决。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-05 15:58:47

首先,你的系数是不正确的。你应该得到:

代码语言:javascript
复制
a0 = -.5;
an = -(1/pi)*sin(pi*i)/i + (2/(pi^2*i^2))*sin((pi*i)/2)^2;
bn = -(1/(pi^2*i^2))*sin(pi*i) + 1/(pi*i)*cos(pi*i);

然后,正如其他人指出的那样,您希望使用一个单独的、长时间的向量:

代码语言:javascript
复制
t = linspace(a(1),a(end),1e3);

使用此代码生成所需的图形。

代码语言:javascript
复制
a = [0,pi/2,pi/2,pi];
b = [0,-1,0,0];
plot(a,b)
hold on
n = 50;
T = [0,pi,0,1];

a0 = -.5;
t = linspace(a(1),a(end),1e3);
suma=0;
for i=1:n
    bn = -(1/(pi^2*i^2))*sin(pi*i) + 1/(pi*i)*cos(pi*i);
    an = -(1/pi)*sin(pi*i)/i + (2/(pi^2*i^2))*sin((pi*i)/2)^2;
    suma = suma+(bn.*sin(2.*i.*t))+(an.*cos(2.*i.*t));
end
series = a0/2 + suma;
plot(t,series)

应该注意的是,由于这个函数不是光滑的(有一个跳跃的不连续),你将经历Gibbs现象,并且会在不连续性附近看到尖峰。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53153203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档