QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3981|回复: 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);+ B) Q, N2 u3 J, d- c# |
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
    % T! Z: C# y  {1 w& V
  3.       for n=[8:2:16]' m3 I1 f( [; j
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)
    7 U7 u2 Q5 q/ U/ U5 ?
  5.       end
    9 Q/ @! t2 {5 n4 b4 O& `
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:: I% n5 @5 b5 A% j1 `7 n7 @3 f# H
) H& j6 ?( ]# d3 `. Z. y
### 代码解释
" V1 u. k1 y/ \5 ^( G" D6 c. Z1 E& O
1. **定义 x 范围**:
1 f9 R- P* k% _  k: M  }   ```matlab) v0 _: S% u, p1 \7 x" T
   x0 = -2*pi:0.01:2*pi;) w* {" `9 ^8 E7 s+ n) w
   ```
2 Z8 O8 l* z/ s' B. B   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
7 j6 E$ a6 a$ R( L$ R' h% H. X. J/ L6 O, M0 t4 e
2. **计算 sin(x0)**:5 c6 S% o6 I9 o5 Q( L& j
   ```matlab
) t: H. H  _& ~   y0 = sin(x0);
1 M4 z2 I+ C1 T1 _% n! D   ```- f; q+ ~: T8 o' ?1 T
   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。
- X" Z( A8 \1 a0 ?0 T6 _% M, r) i: M) _# d! Q( i
3. **定义符号变量和函数**:
$ D+ G7 G, k) f. V   ```matlab
0 u4 g/ Q& M: `2 A8 Z   syms x;
1 G  s( `8 S. q! i   y = sin(x);1 J% X0 c5 g: b0 E2 a0 _
   ```4 b# ^5 p4 L& W" H9 Y" G- w
   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。
: k+ U2 T5 J6 y6 M3 J( b; \+ q  \7 q6 c
4. **绘制 sin(x) 图形**:
1 j1 }, F0 n- ^  o0 n2 @   ```matlab
' z" n( j( ^3 P0 n# c' y2 R& ]   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on
4 B, y2 ]5 X/ T, t" }! H   ```9 X- M* L3 ^( H) X
   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。
/ A8 A/ {( D' @5 V) U. E   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。. ^0 u* ?; M" ~4 A
   - `hold on` 使得后续绘图不会覆盖当前的图形。
* u3 ?7 u3 M- {! T
) u8 K: b2 H3 S5. **进行泰勒级数展开和绘图**:+ _! R$ f) u6 T  ?* I
   ```matlab
4 b  M8 ^/ R1 I1 X! t   for n = [8:2:16]7 W' |! _8 s: x+ ^+ }
       p = taylor(y, x, n);* \+ m, H8 D& F' @% `+ x
       y1 = subs(p, x, x0);
5 S5 A6 P+ L8 E6 R       line(x0, y1)
* T( i! e: x6 I& e/ U   end% _" _8 `1 [3 x# A$ e" e( X/ ^
   ```$ [# B2 a, ~# s
   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。3 z9 u" V( [7 Q7 m4 O$ J
   - 在循环内部:
3 ]; P( T" s( D7 s% g  M     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。+ {, {. F& Q( r" l0 y0 G3 E: y
     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。% O$ N$ @! @& m8 E$ a4 @( ~
     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。
, c3 [8 I7 T$ H$ J% l+ {6 n; c. Z8 w: L4 `- g
### 效果3 k/ g+ }! e+ a3 k. o2 ?' W

" ^0 Q* n( r! ?1 G- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。$ M- U. x9 f' z) t% s

% b1 G) |& j# r4 a### 知识点总结2 W+ v/ A$ ?" f8 O3 f( X2 N
7 f6 \. S8 C# B  J$ h4 e9 {0 g" r
1. **泰勒级数**:
8 w6 v! s. M+ F" Z  o$ G" I   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。
$ _* u) s7 ?8 ~0 P2 f# _! }
; i, @2 ~& z* Q1 Z; R, @4 n% V* q2. **符号计算**:
( [8 ~4 b. U2 O4 K" G   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。6 z" F3 ~! |: N% h
" E! V. o; {0 p. W6 h
3. **绘图与数据可视化**:
; h; _1 Z# F. D* H8 J3 E2 |! I   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。
& ?2 W* G9 X& o; T( }
. J* B: H% F/ O8 L2 m6 m  F7 Z4. **遍历与替换**:/ q/ y- j+ s8 u; s8 M
   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。6 F/ [3 m/ ~  p* \6 m

/ t# o5 _- N7 p/ ?5 q### 结论
+ x, D- Y9 j. A8 G& K+ G2 l! Y' V! x9 F5 F! A, b' N  {# T
这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。7 `0 G' t/ L5 w1 f( {4 b
( [/ c+ o( ?. t( p. r5 @

; s1 T* t9 N' {, Z3 L: e
4 o# o& h6 T4 Q) l0 f0 N7 C$ ?% T5 O/ }; s( }  M

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-6-14 12:05 , Processed in 0.406149 second(s), 54 queries .

回顶部