QQ登录

只需要一步,快速开始

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

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

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

1171

主题

4

听众

2780

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-8-27 11:05 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. x0=-2*pi:0.01:2*pi; y0=sin(x0); syms x; y=sin(x);
    8 a& M! O+ s  E9 P$ g0 p* [
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
    6 m! K3 H/ }, `+ F2 x
  3.       for n=[8:2:16]# E/ |3 R; D/ k
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)5 x, H$ h\" s- c
  5.       end
    ! A- r0 \# B2 {4 p) r& g. r5 w
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:( L. L4 V' [) F+ K

) y0 h, O5 L8 K### 代码解释
" E# G' m; n& q5 i# z& _- _* c% p, C
1. **定义 x 范围**:, a$ o& Q- z- x" Q7 N
   ```matlab
& j: Q% Y9 u/ G$ v6 p7 J   x0 = -2*pi:0.01:2*pi;+ a/ Q* z" G9 H) A
   ```
: G/ g1 l0 \, Y6 Y& P   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
% h3 }, Y: Y' U$ p/ {8 |7 w! K- @# d  S* v' D& o. n
2. **计算 sin(x0)**:' e7 t0 i' T& }3 j, Z  ]- r
   ```matlab/ s# {% [8 A9 v) ~5 g3 x. r2 b
   y0 = sin(x0);
8 k: y- _0 i1 p( J* b   ```0 _1 z; b* ?% Z! S4 k
   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。
4 i. S9 {+ |" a* R2 g! W8 a. L. }1 A/ F" s5 A
3. **定义符号变量和函数**:
+ d* g. i2 A2 y4 r$ q, |2 [: ]   ```matlab8 O3 X) e: E1 Z. z. N3 d# z2 G
   syms x;" O# U8 v# p* ^9 ]& }& s
   y = sin(x);
% U% Z' P: b) G   ```) [* k+ |* s& S* C
   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。" G/ x8 [+ K1 O- j+ u

/ }. g2 f. [! `7 s0 O  Q9 i4. **绘制 sin(x) 图形**:
! a! g6 a! R; _   ```matlab
1 s# ^8 @6 ]$ H( E, J  N   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on" ]  d% K' ?# z; H: E- \- m3 Q9 F
   ```
& H2 V' O$ E( w1 w( D   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。  \: u2 h8 C5 W' {/ Q, l" c
   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。+ E6 k( s; S1 P/ r& Z) V& L
   - `hold on` 使得后续绘图不会覆盖当前的图形。" o: L8 b9 i) o5 s+ H
2 z- v1 v; m8 s$ p* K
5. **进行泰勒级数展开和绘图**:: Q( w. V* P, h3 s3 ~" ?+ _. C
   ```matlab
- ?/ T( b9 Y7 d7 Y. {- A1 J/ A   for n = [8:2:16]
( ]+ ?0 P" E4 p" r# [& C       p = taylor(y, x, n);
2 j1 a5 u) h% l( t6 @! k       y1 = subs(p, x, x0);
: R- e; |+ {* Z& L* F, h2 J" F( D       line(x0, y1)
6 m; X/ Z! ]4 P   end
! r% y. I. w, z+ `" D   ```
1 s) g; r  s4 M" G! O5 v% ?2 O. Q   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。' }! ]* ~1 D% n1 ?
   - 在循环内部:. h, b" A$ o2 F+ i  _4 @# ?
     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。
6 t4 T2 U4 N. N/ S' ?     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。) i1 D5 u2 G$ L! u/ @7 {- P
     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。
  c+ ]/ [  X5 a% }: M0 E5 p& m' Y- }- Y8 C( d- E: z5 Z
### 效果
4 b1 [& {8 Y5 C- q4 U: h4 Y' F8 k0 {! ~3 m1 E
- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。
1 c4 m4 r  h: i+ \' k- p0 H) @( V; Z; N2 U/ Z4 j
### 知识点总结4 l: q& S8 }/ Q% L. I" }: F
4 `: n# w$ T, _9 P/ U8 ~
1. **泰勒级数**:
5 m; K& ]  C/ V& q, j   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。, x4 o! e4 l) @4 K. {! y, k
2 g+ ~8 i! c! }5 m" ^9 B5 o' ^
2. **符号计算**:
& E4 Y# B* o2 B   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。
( V+ q( i, D+ v/ \* R  L0 x9 @  J
7 _  n! {7 p4 K( R9 O3. **绘图与数据可视化**:3 {9 N* t) Z" t& i
   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。
" t0 Y/ J! l  E1 t% T3 G2 y
8 j0 l$ S0 l! [9 Q# Z5 C/ I* j4. **遍历与替换**:
$ I) B2 j7 `5 E: R' O   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。
: U3 F7 I- e) {8 C! H& M; @( a) _
6 [1 p/ z8 ]" h! M### 结论. J- H- p* r! l, S' m9 D& a+ I% r0 _) P
4 ]5 c0 {+ O, a' g, N5 r# G7 A
这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。
6 Z- l8 r! m7 x2 K9 e' A3 m, U, u0 t% @" @
5 I; {( I$ ?& }  ^. h# N2 t# d+ |7 P
/ w: Y  E+ x6 A' u6 D
7 f7 d" q+ X: ^; s) P

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-23 06:17 , Processed in 0.519714 second(s), 54 queries .

回顶部