QQ登录

只需要一步,快速开始

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

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

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

1171

主题

4

听众

2781

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-8-27 11:05 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. x0=-2*pi:0.01:2*pi; y0=sin(x0); syms x; y=sin(x);3 m1 z  _8 M- B
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on2 E7 E  t0 x9 u% z
  3.       for n=[8:2:16]+ a0 `& m8 ^: H6 k& f5 R
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)
    * F0 ^. R& E. F* M& R3 v
  5.       end6 E$ O3 y& Q: p* h
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:# ^  v/ c# d0 q# }# F% |7 F- U
1 Q* @7 U" i; ^! ~9 I3 Y
### 代码解释; S5 G. X  v8 O& v- P- `8 }

# _6 g$ ^# n- C- n" Z! E1. **定义 x 范围**:
+ N6 t8 b0 c/ s9 \   ```matlab
3 q. t+ I3 ^0 L' I3 @7 _   x0 = -2*pi:0.01:2*pi;$ o: n& k) k1 C; d- L6 `8 P2 I$ c
   ```
1 w; R9 [, d; `3 ]7 H  H; N   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。4 o+ e; b& C8 d7 i5 w

2 u1 k* ^5 H. ^0 d' M. ?2. **计算 sin(x0)**:# S. o8 j0 |: p0 G; Y. f8 N
   ```matlab
% P: n% g4 p: S- t" I   y0 = sin(x0);
! i  L) T5 Z) Q- S   ```. x( W  Q( U9 y% ^
   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。
& S2 M+ w( i2 L8 Z$ d# p! q7 A5 }) C; W5 F$ l; f/ Z" l
3. **定义符号变量和函数**:  D" M; R: r+ w. n" X7 G
   ```matlab6 j% M3 ~% j6 h6 r' P2 V& S# n
   syms x;. Z8 r, {( w8 J0 Q  q% T
   y = sin(x);8 c5 R4 s. L3 f2 x
   ```
, d2 ?& J" ~7 O7 [! f. Z  X   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。
9 r7 n1 x7 j6 _7 w
6 s; J# w# Y: _! z2 w! W4. **绘制 sin(x) 图形**:+ c: F; M) ~, \
   ```matlab1 y% M0 k" o. T/ ?
   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on
. X8 \# i  w' M+ ]; a4 R% S' g4 U   ```- y6 A, ^. V5 B+ e0 w! |6 L
   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。
, {- h0 n9 D8 s8 P' [. X3 I   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。
4 @8 X3 _5 K, T' s   - `hold on` 使得后续绘图不会覆盖当前的图形。
" E4 _; ~, i9 ~4 e9 [) ^6 ^* @, g  ~/ z0 F& }. @( A$ x7 S
5. **进行泰勒级数展开和绘图**:0 w$ C; t/ W5 L" v3 d! T
   ```matlab# ]+ k/ H3 i5 b& O% x
   for n = [8:2:16]' @: K( Z4 G! F( S1 ?* n3 ^
       p = taylor(y, x, n);
( x% S; M- }) |% d       y1 = subs(p, x, x0);% b5 p. `& h, E; A; f4 q* k  R- p
       line(x0, y1)/ L0 h' X( d+ o/ I3 Y( C# d
   end0 F. A8 @" H+ c) G
   ```
% b! z5 e" h) L* h9 H/ v& y. P! K   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。. ]0 |$ f% f) ]4 _/ b& O
   - 在循环内部:7 ~% Y  {3 a  Q! f
     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。5 R7 b' }5 @9 m$ g5 c
     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。3 r9 `% H$ z9 l: @- }& s
     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。
9 k8 d) ~' ^5 {+ G2 P. B. j" p. X) a& W- b7 g3 S
### 效果
; Z  ?1 j& N/ r
" q) U4 Z+ d  ^: Q1 R- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。3 I( _/ W$ u# S+ j8 h( _

7 a; D4 _$ h( n) O6 ^### 知识点总结: C: R  t0 G- a9 Y, m1 v
! P9 ~, [1 N% R
1. **泰勒级数**:0 v$ k7 N* j5 Z
   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。: p  V9 V' I0 O; h, B1 Z

) m0 M" G' i7 y: r2. **符号计算**:
: j, A: [1 N9 w% k   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。3 c3 {- a6 R. b1 u2 l

) U. s: w( w4 @3. **绘图与数据可视化**:
8 [* i( U$ a8 U$ ]) c2 y   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。$ H- `0 |- G, N! e3 V
" B- C0 G$ R5 y! V( S5 R: |3 [
4. **遍历与替换**:
% ^3 ^0 u. e% x   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。
$ G$ T" c+ |6 o8 f/ W5 _  y. B  l, C, |7 i+ j
### 结论
1 \) }0 k7 _& B  S; b7 v; E
/ m, `1 s) b6 ~% J0 C这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。
4 I; [3 n, @2 {
. {: A3 y; X5 o) x+ Q9 f/ w* k9 R, U8 S. ?5 V1 O2 d. u; j7 J
0 d8 K* ^/ ]& z; v8 w

# N  `2 _( _% W$ Q/ N2 q# j: H: ~

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-6-27 00:18 , Processed in 0.448128 second(s), 55 queries .

回顶部