注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

徐小湛的博客

高等数学课件、函数图形动画、数学软件应用

 
 
 

日志

 
 

用Mathematica求函数的傅里叶级数  

2011-08-13 21:21:23|  分类: Mathematica |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 用Maple求函数的傅里叶级数 - calculus - 高等数学

 

 用Maple求函数的傅里叶级数 - calculus - 高等数学

f[x_] := Which[-Pi <= x < 0, -1, 0 <= x < Pi, 1]
f[x_] := f[x - 2*Pi] /; x >= Pi
f[x_] := f[x - 2*Pi] /; x < -Pi
Plot[f[x], {x, -Pi, 20}]
k = 20;
a[n_] := (1/Pi)*Integrate[f[x]*Cos[n*x], {x, -Pi, Pi}]
b[n_] := (1/Pi)*Integrate[f[x]*Sin[n* x], {x, -Pi, Pi}]
a[0]/2 + Sum[a[n]*Cos[n*x] + b[n]*Sin[n*x], {n, 1, k}]
a[0]/2 + Sum[a[n]*Cos[n*x] + b[n]*Sin[n*x], {n, 1, Infinity}]

 

用Mathematica求函数的傅里叶级数 - calculus - 高等数学
 这个表达式太复杂!没有Maple的效果好(下面)。

 

用Maple求函数的傅里叶级数 - calculus - 高等数学

 

作图:

f[x_] := Which[-Pi <= x < 0, -1, 0 <= x < Pi, 1]
f[x_] := f[x - 2*Pi] /; x >= Pi
f[x_] := f[x - 2*Pi] /; x < -Pi
A = Plot[f[x], {x, -Pi, 0, Pi}, PlotStyle -> Red];
k = 20;
a[n_] := (1/Pi)*Integrate[f[x]*Cos[n*x], {x, -Pi, Pi}];
b[n_] := (1/Pi)*Integrate[f[x]*Sin[n*x], {x, -Pi, Pi}];
a[0]/2 + Sum[a[n]*Cos[n*x] + b[n]*Sin[n*x], {n, 1, k}]
A2 := Plot[Evaluate[a[0]/2 + Sum[a[n]*Cos[n*x] + b[n]*Sin[n*x], {n, 1, 2}]], {x, -Pi, Pi}, PlotStyle -> Hue[0.5]];
A3 := Plot[Evaluate[a[0]/2 + Sum[a[n]*Cos[n x] + b[n]*Sin[n x], {n, 1, 3}]], {x, -Pi, Pi}, PlotStyle -> Hue[0.3]];
A4 := Plot[Evaluate[a[0]/2 + Sum[a[n]*Cos[n x] + b[n]*Sin[n x], {n, 1, 4}]], {x, -Pi, Pi}, PlotStyle -> Hue[0.4]];
A6 := Plot[Evaluate[a[0]/2 + Sum[a[n]*Cos[n x] + b[n]*Sin[n x], {n, 1, 6}]], {x, -Pi, Pi}, PlotStyle -> Hue[0.6]];
A8 := Plot[Evaluate[a[0]/2 + Sum[a[n]*Cos[n x] + b[n]*Sin[n x], {n, 1, 8}]], {x, -Pi, Pi}, PlotStyle -> Hue[0.8]];
A15 := Plot[Evaluate[a[0]/2 + Sum[a[n]*Cos[n*x] + b[n]*Sin[n*x], {n, 1, 15}]], {x, -Pi,Pi}, PlotStyle -> Hue[0.7]];
Show[A, A2, A3, A4, A6, A8, A15, PlotRange -> All]

用Mathematica求函数的傅里叶级数 - calculus - 高等数学

 

  

用Maple求函数的傅里叶级数 - calculus - 高等数学

f[x_] := Which[-Pi <= x < 0, -x, 0 <= x < Pi, x]
f[x_] := f[x - 2*Pi] /; x >= Pi
f[x_] := f[x - 2*Pi] /; x <= -Pi
Plot[f[x], {x, -Pi, 20}]
k = 20;
a[n_] := (1/Pi)*Integrate[f[x]*Cos[n*x], {x, -Pi, Pi}]
b[n_] := (1/Pi)*Integrate[f[x]*Sin[n*x], {x, -Pi, Pi}]
a[0]/2 + Sum[a[n]*Cos[n*x] + b[n]*Sin[n*x], {n, 1, k}]

用Mathematica求函数的傅里叶级数 - calculus - 高等数学

 

 Mathematica计算很辛苦,而且得不出Maple的漂亮结果(下面)。

 

用Maple求函数的傅里叶级数 - calculus - 高等数学

用Maple求函数的傅里叶级数 - calculus - 高等数学
 
另一方法
f[x_] := Which[-Pi <= x < 0, -x, 0 <= x < Pi, x]
f[x_] := f[x - 2*Pi] /; x >= Pi
f[x_] := f[x - 2*Pi] /; x <= -Pi
FourierSeries[f[x], x, 20]
用Mathematica求函数的傅里叶级数 - calculus - 高等数学
复数级数,太复杂!
 
 
 
 
 
用Maple求函数的傅里叶级数 - calculus - 高等数学 
 

f[x_] := x
f[x_] := f[x - 2*Pi] /; x >= Pi
f[x_] := f[x - 2*Pi] /; x <= -Pi
k = 20;
a[n_] := (1/Pi)*Integrate[f[x]*Cos[n*x], {x, -Pi, Pi}]
b[n_] := (1/Pi)*Integrate[f[x]*Sin[n*x], {x, -Pi, Pi}]
a[0]/2 + Sum[a[n]*Cos[n*x] + b[n]*Sin[n*x], {n, 1, k}]
a[0]/2 + Sum[a[n]*Cos[n*x] + b[n]*Sin[n*x], {n, 1, Infinity}]

 

用Mathematica求函数的傅里叶级数 - calculus - 高等数学

 

看来Mathematica的求函数的和的能力不如Maple:

 

用Maple求函数的傅里叶级数 - calculus - 高等数学

 

作图

f[x_] = x - 2*Pi*Floor[x/(2*Pi)]
a0 = (1/Pi)*Integrate[f[x], {x, -Pi, Pi}]
a[n_] = (1/Pi)*Integrate[f[x]*Cos[n*x], {x, -Pi, Pi}]
b[n_] = (1/Pi)*Integrate[f[x]*Sin[n*x], {x, -Pi, Pi}]
s[n_, x_] := a0/2 + Sum[a[m]*Cos[m*x] + b[m]*Sin[m*x], {m, 1, n}];
Table[Plot[{f[x], s[n, x]}, {x, -10, 10}], {n, 1, 5}]

 
用Mathematica求函数的傅里叶级数 - calculus - 高等数学
 
用Mathematica求函数的傅里叶级数 - calculus - 高等数学
 


 

 

  评论这张
 
阅读(2447)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016