QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2985|回复: 0
打印 上一主题 下一主题

通过泰勒级数展开绘制了正弦函数的逼近

[复制链接]
字体大小: 正常 放大

1176

主题

4

听众

2887

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-8-27 11:05 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. x0=-2*pi:0.01:2*pi; y0=sin(x0); syms x; y=sin(x);
    # y+ k( \0 N& R! p9 j
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on1 [& E4 d# C+ |; H) ^
  3.       for n=[8:2:16]; a# Y5 T2 }. s4 m0 X
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)
    4 \9 ~, h6 i( H7 h\" F/ s6 g
  5.       end$ U$ x- C\" @( Z. S) q\" y
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:) `# X+ S: ]8 S1 l! r/ ^

! Z5 a: Y. E; Z! b### 代码解释/ E1 U% b; j" H' C2 N
  h9 `" |- ?8 R' H
1. **定义 x 范围**:
1 g4 V0 o/ R5 O6 R/ h+ V   ```matlab
; t0 d5 ?3 ~; g( e2 @+ [   x0 = -2*pi:0.01:2*pi;
+ w( W! A4 t) ]* I9 L6 \8 h( M   ```
' ^8 H; l9 r) q: U. y( i( J4 x   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。' c' D  d9 K2 \4 P% e6 Y

2 u' J0 O/ [( [+ b+ B% a0 s2. **计算 sin(x0)**:
7 X* |' w2 E( c/ J: c4 c   ```matlab
0 L) K& P3 Q  T; k5 ^- w   y0 = sin(x0);
9 P! B+ h. b3 u& v6 g: s" r   ```
- d7 N  N6 _: Z4 B: p. |, W8 e& u   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。2 O/ ?$ a! C% o# ?) o, O

. u& P% ^- b' K# S3. **定义符号变量和函数**:( {& J* G7 `  A4 g- q$ h
   ```matlab% f) s& _$ Y4 l1 m
   syms x;
& `  d3 u4 S  w: t   y = sin(x);2 Y, a8 s- E7 x" n
   ```! B# t! \- [9 B* f5 S
   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。
/ b( \9 F' f- n4 M; t
- m0 V0 q" ?- `, g  W/ D/ j4. **绘制 sin(x) 图形**:5 @  |* }" c- {9 o, i2 N; M7 J
   ```matlab, ]$ }- V( }7 P; j4 h
   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on! {) v+ C( @& y$ g9 [
   ```
2 h. m( {2 K/ a. s5 I   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。/ k. l  k& I' L/ B2 l+ z
   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。$ c5 g  X/ r% f2 r0 I# O8 @$ r$ j; W
   - `hold on` 使得后续绘图不会覆盖当前的图形。
+ ~2 Y2 p% q/ s% Z/ X9 N) n" O& }8 V: }
5. **进行泰勒级数展开和绘图**:, n" L' `1 a" L3 t! y9 @9 _( Z
   ```matlab  g; }1 N4 v) U; d6 s3 l
   for n = [8:2:16]' [2 o3 Q+ r2 L9 V0 P
       p = taylor(y, x, n);3 P! H' k' F  Z* J( v4 ]1 \" F) \2 ^
       y1 = subs(p, x, x0);/ T! T2 J% P0 U/ n
       line(x0, y1)" n5 \. p- X/ f) B2 l# O
   end" [- e, q8 D4 s+ p( I' ]
   ```
+ c: M: z8 Z4 h9 A. b   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。) i( d/ g: t9 |" @; L
   - 在循环内部:" d7 I9 m2 Q- H" K% w2 [. l
     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。9 |( _9 }: l, B3 p# o! Q& H( l
     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。
1 V* z% T+ I7 ?5 s; Z. C     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。& ]# I/ ~, s0 y- }( S6 _  s3 v
+ i2 ], F: ~+ s* c6 N4 ?$ q
### 效果! b2 J; I+ f# G2 U) W& A1 t
: s: |7 a4 S/ j0 G7 _$ s; S- n6 B
- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。
" O( `, B; i1 T0 |. u: \2 h# i, x, W  ~* ?3 }5 \* G, i$ S' Q
### 知识点总结
2 O7 Z4 @5 f0 m$ K  P8 H; O( ?) V: T0 ]; T6 ?
1. **泰勒级数**:# j. T; s! r+ b- Z* i$ t
   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。: h7 C0 \, {/ o. n4 {0 N

8 U! t+ C1 r) L2 R" P( N: M2. **符号计算**:. E1 k( \& v- B$ b: P) Q/ h- ?0 h; P
   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。# t) ^! E2 e4 }0 l

' z5 {! {8 ^/ Z8 {$ j" ?9 K3. **绘图与数据可视化**:  b4 A  h0 B$ x1 d9 L" {
   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。- J' T9 Y# v) r3 N  f
, A! ]7 q0 Z3 `3 K2 \2 H
4. **遍历与替换**:
! A4 F( p# o* O# y0 |5 M   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。
5 r3 t# S$ \# y9 A  G8 l% j+ g+ @
$ i3 F/ t6 M+ p1 e### 结论7 ~5 B1 o1 W7 H& }2 R& ^
% \1 G6 t+ j7 U3 y% b
这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。
9 K7 H$ ^1 r$ w1 g
& `7 U. @  j- L4 K) D* p: @2 }  X; ?% D$ ~7 H% \8 {. s
5 ?" `) r) O/ e2 a2 i0 f1 H4 w

' [# [- ]' L2 T0 q: _

examp3_18.m

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

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

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2025-11-3 15:50 , Processed in 0.382640 second(s), 54 queries .

回顶部