QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3934|回复: 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);; u# c: k' e# l6 Y( a0 N
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
    . I$ i\" Z( P6 L2 I: B: c
  3.       for n=[8:2:16]/ F* m; V$ i3 }\" Z# z. p
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)
    - F+ A5 P: Q. [2 D' ]1 a- z, I
  5.       end
    7 R* y, i* s8 V9 N9 d* ~0 t
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:
8 D2 O" a, ^8 b$ W9 c) A$ ?3 h+ e
8 y+ P. Y, u& Q' |( D1 j) \### 代码解释+ ~' K3 c+ W& D5 t* v2 f
# n$ H$ `2 ]: Z& `0 S8 [; \
1. **定义 x 范围**:5 ?+ r- o. \; E3 g) s
   ```matlab
% E8 g( }' k) \4 F# U   x0 = -2*pi:0.01:2*pi;
! t$ ]) ]9 w% b3 P' y! z7 N   ```
$ V' J' E4 \1 D! S. S   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
: L. `! k9 P- K1 _- E' j) k
2 i1 q+ {3 i+ h& g- ^5 t- V# X: v' m2. **计算 sin(x0)**:# r, x5 g7 O9 Y+ H, m7 H$ H: A
   ```matlab. H8 }2 V" f) U( x6 O: t! ]* g: g
   y0 = sin(x0);# G. h- \8 [8 }' y4 l
   ```
6 c( g, \5 u) G- ]1 S   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。( _- ]" T, \7 p& w
6 x- x. N' w- H3 p* n- S8 l4 g
3. **定义符号变量和函数**:& \& t. Y# a5 ~, f  S" C
   ```matlab
8 i5 A/ x. Q; l; o, O: K   syms x;4 f6 Y' K9 e7 w+ a
   y = sin(x);% O& `8 @& e( R# S( z
   ```
+ O9 o2 j. x3 ~* w" x   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。. h5 P* h; {& k7 a6 i2 R

& Q% X! m& e0 V9 A7 ]- Y/ @4. **绘制 sin(x) 图形**:
! p3 D3 c1 n, R4 x& s' w   ```matlab" b2 s6 D% j' A3 G' [2 `
   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on0 {: O4 a; j0 ]0 s" H
   ```# q9 }- Q& D4 t7 z5 y
   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。$ }' ^- M* Z, \8 v, S+ d
   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。
) Q6 |' E2 ~) C1 p2 ]# {- ^   - `hold on` 使得后续绘图不会覆盖当前的图形。
1 f* K; o3 i1 {" p# A
5 `. V) w! L* `5. **进行泰勒级数展开和绘图**:
! z* n8 t  Y: x. J8 D4 [5 Y; d   ```matlab
$ ?: q0 ^8 Z0 k  ?- _5 j# m6 a; Q   for n = [8:2:16]
4 \4 y8 n# Z/ b- \3 Q       p = taylor(y, x, n);
- V2 y9 H) ~4 D       y1 = subs(p, x, x0);
0 q3 U' `, F- G- w; f+ }! [6 k4 @( ~       line(x0, y1)
; e6 r6 k" Z; d2 g( I5 l* _   end( l7 `9 o/ r7 k) e1 X
   ```
$ G0 A7 ^4 O. B8 T   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。
8 G+ K: z1 c4 h5 w- l2 \3 f& H   - 在循环内部:0 v+ [0 M/ {; g; m7 W
     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。
# q- f" y- X$ P/ o' P     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。5 I6 }4 k* I& l* s1 |0 O" c' ?5 F+ n
     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。
1 {- @; n9 R* ~) ?5 C* `( E' I* \8 u' a$ {
### 效果8 d* g% f5 {" \: B

" X; \' ~9 F1 N1 h- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。
9 n% }( \. i- ~/ q4 Y+ N- V" n1 {5 H. m
### 知识点总结* K. Z+ p, t9 j7 W8 p5 L

3 `! \! Y+ D$ @5 r) x( T1. **泰勒级数**:& s. u$ i% \1 m" c& O, F% l
   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。
7 ]! k1 S  @2 E: t+ q
7 G) M" ]/ u! z9 \$ k9 F/ O2. **符号计算**:
3 |. X1 D" F# v( m. O   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。. s- k6 N  o7 n5 n0 k  Z. G  J
' V  l+ `9 W3 @$ E! J3 t; `" A
3. **绘图与数据可视化**:
4 O6 U( B" ?2 ?! Q4 J* f   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。
% \& {. W8 P: I0 L6 {% j/ J
" G/ `7 Z5 w8 m4 |) K/ f4. **遍历与替换**:& I* h, {" B3 q+ l; s
   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。3 ^  X6 G, G$ |. H' g5 `6 S
( k( o; [( W9 E# `! y+ }7 v% g9 N
### 结论) a4 P# S* ^# Y6 M: J

, H8 G) n7 Y! O1 K% L- S这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。
& |0 g4 H& F1 J9 a: _
! W! d% K1 C9 _6 w" b6 Q6 n3 f5 H- h) G  e" ]) }
( c" [& H) _4 W4 H/ _
1 }9 z2 h9 w; V  l" X( O4 b

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-11 13:22 , Processed in 0.439219 second(s), 55 queries .

回顶部