QQ登录

只需要一步,快速开始

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

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

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

1186

主题

4

听众

2923

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-8-27 11:05 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. x0=-2*pi:0.01:2*pi; y0=sin(x0); syms x; y=sin(x);
    % K; V* Q. q8 |( [
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
    ( c% Y; ^, b( u: E. o
  3.       for n=[8:2:16]
    * S& J4 G( `* @\" d; W1 E
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)
    : u) _' n6 ^# g7 n: t* H, n4 w: o/ T
  5.       end  V4 m4 u3 ]2 b1 T, p
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:# D. x4 R+ ?+ H) l+ u: ?5 I5 C
7 ^6 h) @: c0 ?8 V, Q# _
### 代码解释- I$ {  @# y. |5 z% Y! g5 g9 q

+ p! Q( y. u7 p# D1. **定义 x 范围**:
/ Y. Z  O  b: ], g2 A   ```matlab
0 K3 C, f- z6 [- N" x* ^   x0 = -2*pi:0.01:2*pi;
- o1 n+ J7 v& i' r( C  ~( H   ```
+ P& ^2 v. A8 m1 }   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
0 M+ K# V$ O6 J+ L/ T. I
3 m) O- T' O; V  i, z; z2. **计算 sin(x0)**:
& X' ^( d2 v* I4 F4 Z% X& W1 ^( ?   ```matlab
% P; r+ w' z5 H+ Z   y0 = sin(x0);1 ^5 K4 _% U! a7 z" c
   ```
9 {. O: {. b% O/ o; c8 |& {  d   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。, n" |8 t  K! L1 {3 e5 e
% t3 ]  ~+ Z) }% Y
3. **定义符号变量和函数**:" [+ V+ i; w3 v3 J1 |
   ```matlab
0 h& L! H& C  y$ c. h" U* G- h9 F   syms x;
" o* d! @& i1 [! d1 }1 `1 P) ^   y = sin(x);
# d' ?$ z2 v1 w8 F4 ?   ```
- R2 |) i2 Q" g+ f/ ?! v/ X6 `5 z0 ~" o   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。
  x+ ~5 H: T- I- r" d
& u! f; |5 t0 K* s4. **绘制 sin(x) 图形**:, y9 t- _& C6 F
   ```matlab% _5 U# d4 _6 E, V2 O$ ?
   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on
- `3 }) W7 j7 V  ?5 V. @* K   ```
) p1 K) X3 w' U3 [4 C2 W1 U   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。; a. [$ G3 ^" v3 U( t- q
   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。
3 o% L) f, M" I5 ~7 S$ p$ ~7 e   - `hold on` 使得后续绘图不会覆盖当前的图形。
6 e8 q: V8 g# [% ]) N1 |: W6 p5 n, K! j% y
5. **进行泰勒级数展开和绘图**:) X5 a: h* X1 q( E4 W& s
   ```matlab6 I; L, [5 F4 @  o9 O/ G$ o
   for n = [8:2:16]6 a- x3 R* R. @
       p = taylor(y, x, n);
% }* @2 s& J4 C/ v3 l6 K( e       y1 = subs(p, x, x0);
* x( A% s7 W. \' b$ P( p4 j       line(x0, y1)
! g  w" ^1 k) g& p   end' \$ y" ~" @2 |3 N
   ```9 w0 \& c& a( L- z! b3 ~- N
   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。
4 u5 z$ ~+ A3 {; N* e* U   - 在循环内部:
( [6 U9 b( I7 G1 L9 c. q. U& Y     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。% v6 Y# K  p- X& S2 O) x
     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。
# s. ^  d# b/ x1 D$ g     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。
. f/ c: x4 A9 \
' W! Q7 q& W. K2 A$ V+ h0 R### 效果
# z/ C+ I- \8 ?. m& w7 v4 y# ~* a# ^" }
- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。% T# E$ ?3 _. k/ {7 {4 E. z5 B; Q2 e7 f

* r: _% m; H" R. h( K$ ?5 P### 知识点总结
2 i- O- ~/ E3 n+ l; l) O) _3 f. t* X/ R2 W& [6 _) l- T( a' ^
1. **泰勒级数**:& \% e% j+ F8 p. u/ \& L
   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。3 F* M/ o) ?: z  S  y) }  m( N+ l

% D/ S4 ~& K4 ]# d$ @2. **符号计算**:+ l6 G, \) I+ H+ o
   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。
$ @+ B3 _, K  D3 @6 |+ K1 Z% n) E  e; E$ L
3. **绘图与数据可视化**:- V4 ?1 @5 o4 E) p) Y5 U
   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。) O- d. G( H1 V

. s. e5 e; _# f, F* d6 D7 \4. **遍历与替换**:
' S' e! f7 S* [# ~) w0 C( _- g   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。8 w2 X4 S* d% B8 [
( b- Q% k, E. s' a7 ]- w5 t3 I
### 结论
. U1 S% r2 i* S  R) M
, S9 `& b, s4 ]# B; g, \+ B这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。! K/ c1 {) J4 D3 {+ U, c% i
% p$ M% j9 ?3 h+ a+ `

9 w4 R) z8 y9 }' J* X$ |8 ~) B2 Y- H& q. e

- ]5 |( i. H' J' x1 p3 }, [

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-20 23:03 , Processed in 0.444413 second(s), 55 queries .

回顶部