QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3936|回复: 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);
    9 x9 x! q! z' g' m) P
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on) b4 [/ k  Z& u2 e7 L9 j
  3.       for n=[8:2:16]) H1 p$ C) Y* f1 _% ^4 G
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)) E! @0 k# F4 C( ?, {9 k
  5.       end
    4 x! M4 X) O3 D; P
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:
' L) P3 ?, X) T3 l! N1 X* L
& p6 E. c+ L; S5 U" t### 代码解释: T0 ]9 F; {! ?1 c" |8 _
$ I- F0 {& c- }" s, u
1. **定义 x 范围**:# f. _+ y' \4 ?! i# {# m! o2 f
   ```matlab
+ L4 u3 U: Q6 B1 W* C6 W' [* U   x0 = -2*pi:0.01:2*pi;
6 |% f/ h# X+ F, N  V   ```/ O8 o% c, d/ k7 D' @
   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。; d) g+ Y& m0 f4 v3 u" u8 J
! R5 Y6 k5 r& W! {9 o3 M6 M' l
2. **计算 sin(x0)**:: v% a$ e8 b* Z" ?
   ```matlab  }. U8 l' g% z1 `
   y0 = sin(x0);# `0 v% `9 O. N: z3 e- {
   ```
$ `0 c% x0 I; y' d   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。! _+ a2 u0 {4 i- d; ~' Y

. S( k( _, a& J3 `1 T3. **定义符号变量和函数**:# r& h: r1 E/ L9 D4 l. u9 x9 {# k
   ```matlab, J& N/ C7 w' o; {7 b( i
   syms x;# {' u) t5 f0 O! I& a) s
   y = sin(x);
0 N  u$ E5 [4 e$ @; l$ ?   ```' ^; A% g4 `. j% w+ m1 N, c
   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。* z0 n9 U) a8 n$ \% X/ B
! b$ x* E9 A- q" _
4. **绘制 sin(x) 图形**:" N% |$ f6 u2 ?9 t% r6 j
   ```matlab7 o( \8 E6 n3 N
   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on
; X) ~9 c1 P7 g* h. q, C2 m1 e   ```
3 A+ U$ a& g1 n3 L& g8 Y   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。: h  ~- h' ^! }+ Y" V+ y
   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。
" `8 D  ?: P3 j7 c   - `hold on` 使得后续绘图不会覆盖当前的图形。. C8 w0 y& I- k- X' I/ v. r: @
  ?0 m# s4 a  U: |+ a# D
5. **进行泰勒级数展开和绘图**:: D: o1 c; Y" P
   ```matlab
6 x. o/ n( f4 ^: |   for n = [8:2:16]1 a" D3 b8 I% k5 I3 Z2 c1 \* @2 p1 V. D
       p = taylor(y, x, n);
' y+ L8 Q) Y( \       y1 = subs(p, x, x0);+ M, q8 {% ~2 t
       line(x0, y1)
# Y( a/ i! H& _) B9 v9 M   end
2 x# C: P2 {2 x2 m' G   ```
  h4 ]  o  H/ h) T/ e: H   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。: S) ~$ l- P5 P8 `
   - 在循环内部:
2 _* f4 t8 D$ ]( c: b     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。6 [( W# x& X* j* E6 Q
     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。) X* r* ]% R: ?; n- M& X3 }
     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。4 {* m* {8 N; V7 n* G" X
+ x4 f6 M- x4 P
### 效果
$ T' F5 V5 O5 h0 h- k/ i* j3 W. e! m# Y8 ~/ m
- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。2 D% i/ \6 ^9 o5 Q9 Y4 T/ F; ^
; l" Q! ]9 [6 _* n* N; a
### 知识点总结/ `- s# Q, Z, ^, L; M

1 [$ X; l- k% Z) i5 `, A1. **泰勒级数**:
4 |+ N, E* J6 L" C; R# F   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。
: [  p" w. b/ v' V. |2 p. u/ s% `+ S$ `' ]; k, d
2. **符号计算**:
( g& |) E* e+ I& z   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。1 f. z/ M( Y8 _3 L. m
$ L  z, {- d; p# m8 p5 o9 d
3. **绘图与数据可视化**:
: j8 u# u' d: b3 F# }! B   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。- D+ r: |( z% n% D/ v

0 G; E. l; M( p/ n/ L& ~) I4. **遍历与替换**:0 B9 @: Q( ^1 ~3 z. w
   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。- B" y, E+ R6 ^9 D' g9 d
2 i3 t" F* J. S# s
### 结论) H. a! L* N8 G# G; o7 k

5 X3 l5 j6 H! ^& Q# @这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。* N8 P% P4 E3 E" O
' }7 c% w/ \6 y3 Q& E& S" a+ H

2 C- F$ |2 S/ S1 w3 v
% S$ T* b# y( N: f2 c9 F1 |  W: _* q* A& ~3 W8 r; e

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-12 10:53 , Processed in 0.388349 second(s), 55 queries .

回顶部