QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2984|回复: 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);
    ' Z) x' m& N/ |
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on( u/ q8 O: A% P2 K7 V) |! r
  3.       for n=[8:2:16]
    $ O5 q5 J7 ~' `0 i
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)
      M# Z& ^, Q8 v
  5.       end. n: Z\" D3 `, r( L
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:
, O/ n4 t. q3 k) l- L# o6 D
9 ]+ n8 \. W8 f! ~" W7 ]  n6 R4 f7 V### 代码解释
( u) N) L) E! [' _0 ]3 A
9 d8 k- P" Y3 S3 V1. **定义 x 范围**:* |* X0 C& e1 E8 g! V. N
   ```matlab0 c! w7 Z5 J4 O8 _: N5 I5 o
   x0 = -2*pi:0.01:2*pi;
  E* D- [- I! D8 P, B   ```
$ q+ f, n5 f" D" p- |4 _   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
( s  B1 d6 {" k% g7 b
& z! z$ c* C9 u$ Q* y0 W% g2 F2. **计算 sin(x0)**:% r. F9 _; S( {+ s$ {0 _
   ```matlab
& [. V3 e7 x( W& U: m1 r! S. Q   y0 = sin(x0);
& M! Z+ z; L: Y0 Z8 s! p- y; i8 l   ```* F6 W" b2 K% P1 u9 \7 Y
   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。
: M& f) g% t2 d9 k# {$ W9 ^/ K8 ]3 g8 U/ {, }( v
3. **定义符号变量和函数**:+ B8 N$ S/ M: l, h/ l8 Y7 Y
   ```matlab7 l. {  G1 L. ]7 A% E, n$ \
   syms x;
. W! H8 _( }, E' P; b   y = sin(x);- n9 b7 Q: @# @# D% O. i5 T' m
   ```  l2 S, t. w& a' G2 c0 A
   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。2 o$ x8 D3 s  W3 b2 B

# U6 `, i9 W* a  ^7 e, K$ v  f; w4. **绘制 sin(x) 图形**:
7 c3 P2 x& t' _. `2 N4 @0 Z1 T( [   ```matlab8 |0 d. `( E. k7 r8 b# j( g
   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on9 F2 W; R! n5 L( E+ U; w
   ```
3 M9 M6 b( k& K   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。2 X7 L& h% ]( V0 v# o% \0 ?3 [
   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。9 A" X3 ^1 [, v+ F# u
   - `hold on` 使得后续绘图不会覆盖当前的图形。6 p6 l! B; s9 F, q1 V: }" {: S+ b+ K
9 A( s. o! j' J; Z
5. **进行泰勒级数展开和绘图**:
# H  }) q7 J6 \' v: P$ ]# k/ w   ```matlab
& M$ ^8 K' X; d& U3 {/ Y   for n = [8:2:16]% F3 k5 Q) t+ _
       p = taylor(y, x, n);
$ J6 o6 h0 `+ W* K5 u5 L       y1 = subs(p, x, x0);. o: A- y( i) D- d( X4 q
       line(x0, y1)5 f  d6 {' X/ S: V; s. s; S0 L
   end, |0 @# t! e$ Q) \& d
   ```8 ^+ m! [$ q0 Y" `' y5 _
   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。
7 a) Y" T' d2 P" u8 ?   - 在循环内部:
! n  C" D1 ^& n     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。
/ ^7 N3 Y) g3 R* R9 U     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。
$ Q, C$ C/ L+ d7 i; t# K     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。3 f+ G) J) L5 {' S2 V1 \3 B

; y4 \' x7 g) G### 效果
  o7 R# l8 R/ o; k- B. ^
7 g: I+ Y0 H4 Z- R' s0 F- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。3 S  Z/ _" K- G% l; q

$ m8 M. K8 p. v. Q& q9 M" P' O### 知识点总结4 N% t" e; T  [# L- a4 P4 I4 p! X

! C: r$ P2 u  q( q1 ?  k1. **泰勒级数**:
$ b% A1 R" i8 r1 R$ m   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。7 n3 S$ g* [1 M1 W

5 J7 a8 _0 g9 |' F2 [2. **符号计算**:% g; \7 M  n. ]- |9 g5 c1 t
   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。* }7 T) o7 S# }8 f& F" `: a5 p4 J( [/ X
4 V0 z9 l' T9 o: _
3. **绘图与数据可视化**:
2 m2 t+ }- [* V6 k1 B2 s/ N) w   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。4 i/ `. \: f+ ^

  R% O6 y& ?0 C; U- l# R. K$ P5 @4. **遍历与替换**:
) p$ y( B7 _9 G0 D, J0 m) v4 E, s   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。
0 F9 s- h( e* y2 g& U" q5 v. U$ w% ?* e5 \6 s* g1 q1 B
### 结论0 M# O( r, t8 P0 z
7 `  [! M7 j3 f) d
这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。2 @, p4 a5 Q- B" `
% E# r; ^* M5 g( ]0 Z/ I. F% {
% m7 I! l0 ^5 e) I+ S, W/ I; x

2 e+ X. `! j* ^* W) q- N( P/ Y! s
: E+ P) Y% B- D# z% c& o

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:43 , Processed in 0.433395 second(s), 54 queries .

回顶部