QQ登录

只需要一步,快速开始

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

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

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-8-27 11:05 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. x0=-2*pi:0.01:2*pi; y0=sin(x0); syms x; y=sin(x);
    / U9 D  N# b3 M$ m
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on7 i- l4 u2 A4 J* K\" G$ P% T+ l( S
  3.       for n=[8:2:16]5 y% `- _9 H' Q% S/ ^3 N+ |\" B  d
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)5 B8 g- r+ \. l$ P9 q0 F% R8 F9 i
  5.       end6 l* S# T: H6 R$ H
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:$ |3 T" s6 v1 \0 h9 i

8 r+ H+ _5 k, }. [### 代码解释
' b: r$ ^* W3 J$ f8 |- X+ `- s1 V6 B; w& v
1. **定义 x 范围**:
9 W: E2 v. c4 j+ f# F   ```matlab
$ k5 y8 P) U3 m6 T/ b$ q  Y   x0 = -2*pi:0.01:2*pi;: v2 |- R6 ^6 l0 L5 `1 d1 z
   ```7 H% R% t% c: a/ b/ V( ~0 m: K$ |
   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
+ j( R1 m! J, r6 I6 @
4 J* p! ~" v1 O1 I' m- L, o2. **计算 sin(x0)**:
# E: u: m! p* s, l   ```matlab, |) v* ~% W9 z: X2 z; R' k
   y0 = sin(x0);2 i8 O0 [- t3 R$ O
   ```
! P  o: X* R9 ^+ G( [   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。4 r8 B+ b/ A! I/ i- O, d9 u: ^# C  b7 `
* I; u! s' Y: i5 J$ R/ O1 A
3. **定义符号变量和函数**:
* C8 G( t0 E+ T' |2 B4 r; Z' u+ U   ```matlab# K+ I8 Y1 _' n5 i4 \6 R" h( V
   syms x;) c$ G' N2 d% s' J2 J! Q$ V3 O! H
   y = sin(x);
8 M- Q+ j- u& e! h% j   ```& i2 R% J5 M8 `; B, c. ~, S
   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。
/ y! t7 D4 U& ^8 P, W
: W4 x$ i' h+ f/ G: O' @! f; z4. **绘制 sin(x) 图形**:
/ O- O2 G6 ]- m: C. A: H9 x/ Z. u   ```matlab
+ y! E: t! p, ~7 Z) r: x  l$ r   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on
3 o0 P) r& I5 X4 q   ```
" |/ B. M9 A# z+ M. w. O; ?% ]   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。
& G; @9 J9 V' }  a! l; m   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。/ t* B4 B7 q; a7 w) e: n$ p/ Q8 I
   - `hold on` 使得后续绘图不会覆盖当前的图形。+ z  N) E# V* M% k% ~2 C% c

1 ]2 h5 P" Z# Y$ C! l! W5. **进行泰勒级数展开和绘图**:
4 H5 I4 L2 R4 s   ```matlab
( t. ~! X- |% ~1 q+ I+ d4 a! y   for n = [8:2:16]4 k+ f1 U* u: f" s
       p = taylor(y, x, n);
  ]) r& Y1 d! L5 b% n1 l5 G       y1 = subs(p, x, x0);. g* Y; c0 }4 K8 H$ B, Y) y1 p* L
       line(x0, y1)
3 o- P3 }; p! s$ f' M2 v0 |( p   end
: b7 o2 H) [0 ]/ P   ```( \7 v- C) ^6 \
   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。
$ E* B, G' h, ]& \   - 在循环内部:
* l% m8 k8 @6 p' C& h! u* q& C     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。" _- c8 H- d6 b" C. n- P
     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。" U7 l8 [  W/ ^+ m( X
     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。. @1 B3 C- V4 ]# d8 Z1 V
1 Z, k5 T0 l  b7 e! Q6 W/ f
### 效果+ T0 \1 @) r$ W  `# ~& m
. O% ~) Q, B2 Z/ z; @8 _
- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。
5 Y4 \) x' a4 r+ ^8 D6 K; i) `. _+ ?6 X+ }7 g  d+ R& `5 V
### 知识点总结* H% K$ y/ n( ?6 H& E
! u8 O8 |% Q2 A8 D/ }
1. **泰勒级数**:
$ `4 Q) q: T. B$ s6 S   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。
; ^0 R0 W5 `" c" ]* O3 B# g7 i$ {9 p
2. **符号计算**:
: K/ S0 j) k' R" X! C/ h0 f+ [7 `   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。1 F0 ]' g* w/ K7 r
. @: }4 Z, O! T% o; @' Q7 W
3. **绘图与数据可视化**:
) t( ~% |; m5 }# Q8 a/ l1 k   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。. u; ~( u$ a( A) ]& T

* Z4 j. X" n0 c' k! [4. **遍历与替换**:- r) |6 b0 u$ t+ R6 h
   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。7 m3 G" f- j1 l2 g5 ]$ Y; N9 b5 T
: s' h: k  K$ w1 @, M: c
### 结论
6 n; q6 m, W& D: Z# L4 G$ {0 _0 F. b7 B/ `5 i/ @& o
这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。
% Q) t' T; u4 \+ y
1 i! t/ ~) }# i+ g0 H7 b9 v  q0 u/ {1 ^& g
$ O' g3 m; |. A  b0 G
$ i9 N/ S' e' N, y  |

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-8-25 12:20 , Processed in 0.342041 second(s), 55 queries .

回顶部