数学建模社区-数学中国

标题: matlab傅里叶实验 [打印本页]

作者: 2744557306    时间: 2023-12-23 16:21
标题: matlab傅里叶实验
  1. clear all7 A/ e! K# C( y
  2. syms x;
    : v, ?! y: E3 `+ s
  3. f=(exp(x)-1)*(sin(x)-1);        %直接由已定义的符号变量产生符号表达式! P2 Y8 \3 m( L7 W2 v; O
  4. xx=-pi:pi/200:pi;
      N9 @) w4 F9 f
  5. yy=subs(f,x,xx);   %将符号表达式中的x符号变量变为xx数值量求值
    8 a& D+ |5 E  \: K( F  F
  6. n=9;( A5 y' y4 ]' W' `2 B% m0 s% D2 s2 A! a
  7. f1=fseries(f,x,n); . k; o& @7 M, u- G" i
  8. y1=subs(f1,x,xx);
    / R7 S% X( ~' e6 h0 n. j( O
  9. plot(xx,y1,xx,yy)
复制代码
  1. function F=fseries(f,x,n,a,b)3 k( M3 ?4 K/ ]/ q% S2 V, D  a8 q
  2. if nargin==3                %若输入为三个参数(缺省)表示f(x)在[-pi,pi]上展开
    ! X6 J7 m2 v6 G0 E# G
  3.     a=-pi;" ~0 d, u' {. [# @' V3 K
  4.     b=pi;
    : q8 W0 g7 f  b& F# _* L
  5. end
    ; [" Z: b" G( N2 B7 F7 s
  6. L=(b-a)/2;
    " }4 w$ u- o3 s, o
  7. F=int(f,x,-L,L)/2*L;        %int(f,x,-L,L):以符号表达式或符号函数f为被积函数,x为积分变量,-L为下限,L为上限计算定积分
    : a/ d( R0 Z, w' e9 Q
  8. for i=1:n6 P- I3 j! h% `: Y: P
  9. an=int(f*cos(i*pi*x/L),x,-L,L)/L;
    0 }) J8 D  a! N. H3 |  A
  10. bn=int(f*sin(i*pi*x/L),x,-L,L)/L;
    8 Z# x7 H  \7 k; t! T! }
  11. F=F+an*cos(i*pi*x/L)+bn*sin(i*pi*x/L);
    , E" v/ q: ]1 [) N' O7 j1 R: s
  12. end
    9 D, N4 Q. v/ Y2 m; a1 H
复制代码
这段 MATLAB 代码使用了符号计算工具箱来进行函数的级数展开和绘图。以下是代码的逐行解释:
7 j, r8 B& h: ~( K6 T. i
) G$ O, |3 o$ n) V* W5 D! e: u1.clear all: 清除当前工作区的所有变量。
+ B9 b4 b! c" e) t9 R3 M. ^2.syms x;: 声明符号变量 x。
7 @: E3 S! d! t" x9 z) J6 f5 \4 i* J3.f=(exp(x)-1)*(sin(x)-1);: 定义符号表达式 f,该表达式为 ((e^x - 1) \cdot (\sin(x) - 1))。
" Q/ ?1 `4 p. H- D  p  q% _$ \4.xx=-pi:pi/200:pi;: 生成一个包含从 (-\pi) 到 (\pi) 的数值的向量 xx。" `9 T! W+ V- M* S  x7 G& _
5.yy=subs(f,x,xx);: 使用 subs 函数将符号表达式中的符号变量 x 替换为数值向量 xx,得到数值向量 yy。# x/ |; y- w  b5 w* {) J
6.n=9;: 设定级数展开的阶数。
* M* v% e. \, O  ~' F& w. m: \7.f1=fseries(f,x,n);: 使用 fseries 函数对符号表达式 f 进行级数展开,展开阶数为 n,得到符号表达式 f1。( R; x- j9 ]! Y7 l9 H, Y
8.y1=subs(f1,x,xx);: 使用 subs 函数将符号表达式 f1 中的符号变量 x 替换为数值向量 xx,得到数值向量 y1。
1 |" K0 f( F0 s6 x% b. r9.plot(xx,y1,xx,yy): 绘制级数展开后的函数曲线 y1 和原始函数曲线 yy。$ L& `$ l- f/ \7 L

; h# t* c# Z& j这段代码的目的是通过符号计算工具箱,展开给定函数的级数,并绘制级数展开后的函数曲线和原始函数曲线。
8 o# V+ V) q) u' L5 ? QQ截图20231223160601.png
1 I4 x3 l: |- k/ |7 j: Q; i0 c3 l; \4 n( `7 O/ `: J# r% L9 k! K
9 f7 I- _  v) B$ E3 w5 \+ ~/ N

0 M9 i6 A5 O1 c- X, t. H
# A3 V% u2 J6 H* }$ L( v0 T

傅里叶级数实验.rar

734 Bytes, 下载次数: 0, 下载积分: 体力 -2 点

售价: 1 点体力  [记录]  [购买]






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5