QQ登录

只需要一步,快速开始

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

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

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-8-27 11:05 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. x0=-2*pi:0.01:2*pi; y0=sin(x0); syms x; y=sin(x);
    ; J% P' \; d5 o. E* j( D
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
    - n\" U& Y. u6 X4 T5 i( X
  3.       for n=[8:2:16]
    & o\" x% c9 c5 _5 O: a* f
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)& x$ G1 f\" Y# _0 M; t% l- Q
  5.       end5 v) A0 v: Q) T
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:: h& B7 k$ |9 b' Q# I/ L' F

% Q) J" E- O, Q$ m' O6 G### 代码解释
9 u& s5 m3 S6 z2 ^" R* Q
6 c$ W) U9 B) }1. **定义 x 范围**:$ s, j& P! d4 r& H
   ```matlab/ a7 c1 X4 y1 k! F) t. J& M7 A
   x0 = -2*pi:0.01:2*pi;3 b& q) _0 k7 n# q2 b. {
   ```
) q, @; o( v; C+ \8 P   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
4 q; i* F5 V; p* K" }& d3 V; s( p2 Y* s" f/ W& O& i6 ^/ \
2. **计算 sin(x0)**:
+ j; K! F- R9 F5 K2 C   ```matlab. ]2 z( l- e; r; b
   y0 = sin(x0);
1 L. ?/ j: y/ j# _0 |, @" d3 ?   ```
& F$ o! x6 c# r' p+ `0 T! n   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。, X: A) S$ r; g6 F3 K2 f' R

2 w+ u: s$ ?& `# L3 B4 l3. **定义符号变量和函数**:
( l% V1 _. x; n6 g   ```matlab
1 k& N4 H0 W5 p( _- q   syms x;
9 f% ~7 N2 J9 ~- m, W   y = sin(x);
/ ^* i1 c4 I2 @   ```- U: {& D5 z. n# d3 M$ Q6 m) S
   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。
) d0 ~) \2 n# p5 a9 K+ ^( j2 a7 N7 I% i7 W& H' l: U7 {" R$ {4 j) V
4. **绘制 sin(x) 图形**:$ `8 r2 {! ]5 p( t- d! _
   ```matlab1 G" M' T/ N( c. M2 ?& V
   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on. e& @$ k6 m4 Q( U1 l- c( p
   ```
  c. t/ D+ y; y) l   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。; X- {& `3 o" k/ `* U1 ^* k
   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。
  d7 Y, W3 A* l% J9 Y) |   - `hold on` 使得后续绘图不会覆盖当前的图形。
8 K6 u; P$ ~2 [; s
8 S1 r; g/ q+ W) v% N. c! O5. **进行泰勒级数展开和绘图**:5 K) F( y9 p5 U5 a9 Y
   ```matlab
9 L0 p/ l. N0 x% J9 E( X   for n = [8:2:16]/ L- J+ l# \0 J0 E' @$ O
       p = taylor(y, x, n);
6 j5 g! i0 F* j" W       y1 = subs(p, x, x0);
7 f& p- d4 D8 z       line(x0, y1): r# y8 O, s( U0 e, u" Q9 g
   end
- H2 Q; _% p# F5 n5 a7 M% s* h   ```" x+ g% F: k$ V) C# y
   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。
! Z5 j& j4 S1 L, Z, L* Q7 [! X   - 在循环内部:+ L% W, G9 l9 P7 u+ [! Y
     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。! y3 W* n% M3 b) W
     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。
) e/ e0 g0 [' m" R     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。& w# i% M( a+ D; g/ F, ^
2 H0 ?; x, f, `4 z- a, @
### 效果7 ]! L( R6 w4 ^0 B- k: b

* \. C; F( U+ R- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。  b  h# z, B2 |

; }; w! A. D. s( o& k! M/ [### 知识点总结7 T. v3 M5 w2 J5 p# s

. z0 p; _0 U; I( G# K* u1. **泰勒级数**:! L; }5 w! O  L& n
   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。
7 {# Y/ K. ^2 P4 f: I0 `  L# O! Q: e
2. **符号计算**:
3 h1 I: @! N& Y) a4 b1 p   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。5 G: D& i# N# N" @) W

) |* M2 G0 ]0 |5 m+ ?; o- |' ]# O- n9 v3. **绘图与数据可视化**:
! E1 @1 p: }  c! h) C   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。8 r+ V/ r$ Z, N# p. X" ?0 y

1 u' G+ A# }1 V4. **遍历与替换**:2 s; C3 G6 c, V6 d* `9 J
   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。
# ]  ?5 m/ E! ^" H
' Y# A# j$ o" f. q* t" Y4 ?0 J### 结论/ @1 s) @( t& y9 h& V
1 G! ^' d# X- i' U4 l
这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。
6 Z/ \. d: I) Z6 M2 B) ^( G/ [$ ]$ g8 a; k& [5 w  s9 Q

: X8 X$ U6 v* x6 P7 [5 D& ~7 v$ {

6 V' r- f4 e8 ]( M6 n

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-4-15 16:13 , Processed in 0.448733 second(s), 60 queries .

回顶部