QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-8-27 11:05 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. x0=-2*pi:0.01:2*pi; y0=sin(x0); syms x; y=sin(x);& [$ @/ ~& S) W8 u8 C0 I$ Y& D* U+ G% t
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
      }' p1 y0 {: Z8 {  i
  3.       for n=[8:2:16]
    . b- B% F: {/ o! {3 N9 @
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)- p' f. c* V. U* e0 y$ |2 ]2 v) x
  5.       end  d; V, S8 X* @+ `0 [. }\" G- J% v
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:
/ K1 Y% {0 m8 R% @4 y0 A, _& r( `3 B) s5 q$ s7 f, s) W" C# ]2 F4 [
### 代码解释" ?. I5 p% ^6 {* n3 l% k
  c6 F+ i: a0 v
1. **定义 x 范围**:
1 m# Q) B5 j& L. U, M* a  Q2 T   ```matlab
) f4 j5 s) n7 B$ |  q) Y   x0 = -2*pi:0.01:2*pi;
1 Z4 m2 x" @" g8 _  A   ```' e% Y. q1 Q& k
   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。. c* b# p; Z  \1 b; S. n
+ D0 f; S. f3 ?  ^1 v# t
2. **计算 sin(x0)**:. t$ K  M' Z# _
   ```matlab6 ^0 v5 d. q/ u- ~& a* x
   y0 = sin(x0);
0 U% _9 u3 E5 y" O( m/ r; A! T4 p/ f   ```$ S0 j1 o/ _- t; f
   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。( F& ]! U2 o( v
" p7 h) x2 e) C9 F( }( u% f
3. **定义符号变量和函数**:
" l" [( o$ A7 `* m& V* D* W0 M' T; G) d   ```matlab; `+ G4 C: P% {+ u% @. O
   syms x;
7 B7 d9 E# C6 v" [! m8 w   y = sin(x);9 k% [: T, a" G  N, a
   ```
2 C$ w, X  ]8 W( T* L5 c   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。
' ]* Y% `  t# _- z# a3 O" H# j( h; i4 D3 e, t; F
4. **绘制 sin(x) 图形**:" P" C+ B3 C4 H  t! o- [
   ```matlab* x# ]# f7 H" z' M9 f& P# ~
   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on
6 x' e  J! y0 Z. j0 b8 B( u   ```
& Z/ Z# S/ {- \   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。" T; l: W" k1 V  A2 P9 g
   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。" @$ \3 F/ F$ v0 a' x& D
   - `hold on` 使得后续绘图不会覆盖当前的图形。
, m( K# D5 j- A1 [& C, Z  E/ C' {+ {' R9 ]: k7 Q. d7 c( n
5. **进行泰勒级数展开和绘图**:
# z0 n: }" b" S5 @, H   ```matlab
( r1 c# n- P( L4 o8 O) H   for n = [8:2:16]
! ~% s. m4 \* n       p = taylor(y, x, n);
' O4 z8 l' ~+ l8 [* P, z       y1 = subs(p, x, x0);2 ^: Y. d' l1 v% g
       line(x0, y1)
* _8 Q. q3 g4 Q+ q3 E9 T   end
+ N, q/ c% k4 T& p" T4 q6 {   ```2 i5 s0 x. L% C5 k8 e  l6 a6 K
   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。8 S+ }) n# j9 l- E# f5 E5 o& y
   - 在循环内部:: C8 @9 n# G$ U, H% @
     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。
) W0 q  T4 C/ [" x+ K& e& X     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。! _* R8 i# \0 i5 R
     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。3 M; t) g1 _% b8 ?
; a; p# r+ q# j1 A6 G! z  l8 M- ]
### 效果
  w( ^% C% h- N. S+ k7 E3 u0 e3 K: T8 A0 J7 S, A* }+ }
- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。
/ ?) y9 B0 D! ^' A8 Q0 V: D" {: \9 E( W1 ~! ]( N. m
### 知识点总结) C9 u8 h1 `  Z6 F" ~  Y) p

! \4 @, V$ }& x5 I( F% I: U8 Q1. **泰勒级数**:, e4 w. P0 {5 c
   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。
5 x( v0 ]+ z- q4 @& A: `% e: h  ]  ^+ L  p  c
2. **符号计算**:
% }/ [5 m  o/ `6 U/ a7 z! v# [- ^   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。: s: q1 M7 C2 p- i3 I/ s
1 K/ R$ q  l( B3 h7 R+ I8 Y, L
3. **绘图与数据可视化**:0 m8 B& t, d1 t
   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。
" I' {! e- u7 F7 ?4 d- ^. \" l8 z! j  b) f! g5 l
4. **遍历与替换**:
% H' U- }  j8 D# L1 |   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。, j+ o% z8 S9 Z$ P% h, I$ y6 U; y. H

) _8 Y4 t* }! Q7 V+ z0 F( X# r### 结论
& K4 _+ \, E( W9 R  @5 b& R8 J% v( |
这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。5 z9 f7 t! _$ u: F0 q5 k
* Z: z! E& ?: D; \

$ N4 i& G0 M+ w" S2 y' h
+ W9 e2 S' [' n) U- U- t
2 ^+ e+ S, Q7 T  l; K

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-7-28 17:41 , Processed in 0.467940 second(s), 54 queries .

回顶部