QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-8-27 11:05 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. x0=-2*pi:0.01:2*pi; y0=sin(x0); syms x; y=sin(x);
    1 Z) z% g5 L% ]9 ^0 w
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
    3 ^* }; [7 _% e$ d6 A4 u, v
  3.       for n=[8:2:16]
    , U' n+ t9 |8 i/ s, N
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)6 k3 ?3 h& U! r8 z1 w# H
  5.       end
    ' H$ k) _- x) l' N& q
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:! q: Z3 v4 I$ h- c9 c8 v0 }2 P( x
: M2 _& z  x7 P, g3 ^6 E
### 代码解释
' e: w: R2 G5 ^4 [, `4 p; r4 `5 k, M3 n/ F) B
1. **定义 x 范围**:
+ i$ z  S2 Y! C1 G) A/ F   ```matlab' c  W! D+ n" X+ \/ g
   x0 = -2*pi:0.01:2*pi;
+ p, a0 j5 \& q' D! g   ```  G/ s' _/ e. Y7 K8 X
   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。9 A; ?$ ~0 ^+ H0 @

& N5 Y4 T' _5 S7 g; g& F2. **计算 sin(x0)**:5 `5 M0 U; v( H) _! ?
   ```matlab; {; Y* }% u- N
   y0 = sin(x0);4 c6 t4 V, o4 W1 U% N/ L
   ```
8 ~6 U; k" v3 d! `5 S  y   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。
8 d/ T; q- \; Q8 L( \9 V
, j1 [) r) ]4 C, u3. **定义符号变量和函数**:
. M# `, i: _7 d, Y: {. f( E: C   ```matlab
/ d, B! d0 O7 R( h  [, R0 j   syms x;: H1 r# c. }5 _" W% B
   y = sin(x);  _6 C1 I) @5 j% y& L  F
   ```% w/ o# G9 o/ c, @* K* c
   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。
8 c( h5 ?. E' {4 ^% I
6 E. E* ?/ y% E5 K" l4. **绘制 sin(x) 图形**:6 @; n' R3 z: G9 q
   ```matlab
- s) u0 q3 L# v# S   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on
7 H) e0 m% o& _/ {   ```
! ^7 K6 c4 s% U0 w! x: S   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。
4 V6 |& A! Y( e' l) I2 e" F   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。. ~6 Y- i0 d5 i9 A! N
   - `hold on` 使得后续绘图不会覆盖当前的图形。
& v* H1 P" A4 S9 I
  z  j  R: m8 U8 T7 V! D1 X* N+ {5. **进行泰勒级数展开和绘图**:, a. z& @; L% [5 `# J' ~4 w% |
   ```matlab! Q3 S/ U) W( }2 C  x5 Y
   for n = [8:2:16]
" k! [5 V2 x: p3 }! i, w" [       p = taylor(y, x, n);
& M& ~0 |0 _5 ~( c$ ?       y1 = subs(p, x, x0);
; ]" g  m5 c# ^; `6 G+ h       line(x0, y1)
5 H  _% _0 @, ~# O9 e' I- E   end0 J: p3 i7 l# ~+ P* V& M
   ```  R6 b; s: j& Y& {7 K
   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。& _- k9 Y4 ~9 o" J6 J  \
   - 在循环内部:# c+ L2 G7 s' S: o& D
     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。8 R0 A6 T( I, \/ v! ~9 P5 O
     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。
; s, W5 N1 Q8 P6 @# y+ G     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。% j& @, G; a4 F5 x( ^- V' z

' y' e2 D$ E9 g7 S1 |/ n6 t### 效果
2 ~9 e/ ], ?4 ~, @% i! p6 q3 Q2 X2 t; g, l+ A
- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。' u" U# u) ]/ c8 m6 O1 Z! B" Y
% h6 F$ M: s; R- s: l
### 知识点总结
+ S) W1 F+ X% h* b6 N; P0 t+ M( D
1. **泰勒级数**:
4 e+ L4 G3 _& f) ^, ?   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。, q7 U/ N1 ?4 h  c7 v, j1 D
6 I% ]; D$ c. s3 S
2. **符号计算**:
& r0 G" \4 J- T6 O2 t) m; {/ S   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。
- w- |1 k) `( ~! b( i0 K1 N0 A8 p  O- ?) }9 }0 T
3. **绘图与数据可视化**:
: U2 [/ F9 U! u9 d# R   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。% ^* F. [: R' ~) h: H5 c. a1 a* s" ]

: G/ [9 C+ h) I$ s, ]) H4. **遍历与替换**:: h& E4 _( c) C% e
   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。
/ d% O( t1 u# P5 a+ G( z
+ m  ?# u9 A+ d2 l2 U3 b$ W5 t### 结论
2 C+ f1 L6 Y; I7 L4 t
2 h. b2 I) v; u这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。
. g# z7 C" r& S. H
/ g, }9 l/ _( v  \7 E1 \* s! c" ^: g1 c

; `1 K& G9 p5 c3 ^) H0 U  Z
. i' ~( A  q) [+ _, d  `

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, 2026-7-29 06:27 , Processed in 0.529173 second(s), 54 queries .

回顶部