QQ登录

只需要一步,快速开始

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

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

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

1175

主题

4

听众

2872

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-8-27 11:05 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. x0=-2*pi:0.01:2*pi; y0=sin(x0); syms x; y=sin(x);
    2 ^( o. T* P' L, f6 g
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
    7 x, V# u, p! q! D\" X
  3.       for n=[8:2:16]
    2 j; Y/ k, T. a; e, V: D
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)% @/ T( Y( p5 ]/ Y0 Z8 ^; P
  5.       end! G5 s1 s* N& R8 u
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:# I! `* Y3 |  U

6 A9 f" s% M' P1 B8 D* _### 代码解释: {# g2 g6 l! g+ }- _! d) F3 N6 w, T

6 s6 P. m$ J0 X8 l" i8 U: J- F1. **定义 x 范围**:
- ?5 q# O. h# b- Q  L   ```matlab; ^! a/ b, A6 G0 Z/ z1 Y$ U7 m
   x0 = -2*pi:0.01:2*pi;# W1 _6 n8 O: b- _3 Z  W7 s
   ```
2 y7 |' K" y9 E4 a" I   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
* G: l+ p+ n' h' X4 ?2 x
5 T1 R; _2 |( L4 `6 K2. **计算 sin(x0)**:4 Z  k# A/ u- x. s& I' V' I
   ```matlab1 U7 x0 {; y$ Q' J( d( \: U
   y0 = sin(x0);
* [1 ~4 F5 w9 U3 |; C   ```) s1 |+ I6 I. F1 b
   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。+ |1 m( X' Q) g$ b# D& A

- h- F2 y6 m' R) N1 E" G- Q3. **定义符号变量和函数**:+ Y% f" F, b3 K
   ```matlab
& @3 P0 ]4 |, `3 {3 a6 [   syms x;! y9 S  W' u9 h: Z7 o
   y = sin(x);" K! h$ t, A- g* N: ]2 j6 @
   ```% ?7 _/ U$ [+ |- e
   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。
: u+ a# _$ F1 W. j( k: V! n; ^* N$ z" u
1 ]/ }8 \* q. q, ^4. **绘制 sin(x) 图形**:" P8 C$ J9 Y; u! G. I3 l, o2 K" P
   ```matlab8 y1 i! E2 L$ Q- @+ w3 T* G: W
   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on" u: Y0 X1 |: _1 A" c
   ```8 i9 [, ^. x; N; T9 l" S
   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。
7 }7 Q5 V" K0 Z  r2 `! \; N   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。
3 Z6 I7 B: A8 B+ [8 d+ M; ~' p   - `hold on` 使得后续绘图不会覆盖当前的图形。2 P/ \- ], A. [' |9 O
3 |1 c7 D) @& `% L
5. **进行泰勒级数展开和绘图**:
- q% t# Z( ]8 b   ```matlab
) {; S0 g. P# F9 i$ R5 X2 v: S   for n = [8:2:16]
$ X3 C1 d- P1 M8 z7 |; D0 I       p = taylor(y, x, n);
& F) B5 Y( v1 m8 @" D7 Y8 ?9 X       y1 = subs(p, x, x0);
  T8 W# N8 m% l/ q0 c* D' ?, ]: K       line(x0, y1)
8 N: L3 N/ o$ G' w4 n4 [2 B* k   end
$ g; q8 Y4 H) X/ L4 R: ?   ```
$ R3 F( |0 _6 W! H3 p. d$ W6 I   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。2 `# e/ A1 u- [* y. p
   - 在循环内部:
6 [" v) d! b1 Z/ u( E8 d( R% x8 c2 C     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。* u* F: C; @7 ]$ H  ^
     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。
8 f, l/ }1 v+ N$ n2 V     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。
/ _3 W: @$ S; q+ u" i; a7 K/ ^# w1 w6 d; J) d9 o/ I) w( c
### 效果
* D0 e: L; ?* w8 N" a( k8 q
1 ?6 |- T; o: o+ n- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。
0 a" o2 q( O6 @, h8 _  ?
# n! Y; r2 x" Y" `- j2 y8 n7 x### 知识点总结
/ P* F3 {/ w4 T( t5 C$ H
, [- E4 \1 i/ ?+ y$ n8 m0 C1. **泰勒级数**:
. g$ |. E" ^- t   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。
( q( }- `& r  @* O: V# K0 J! O+ h* V3 u4 G" G; ~! p
2. **符号计算**:; u/ N( `8 J9 D7 r' E, I, B( O6 V0 v
   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。
6 i7 M/ \! ^5 t& v1 l. Z+ A
! a0 x7 T0 z! U* b! f3. **绘图与数据可视化**:2 C+ l/ e+ Q' z* O' u
   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。9 N+ V9 v# V5 l$ u

2 y$ G2 ?) c) b4. **遍历与替换**:
' M' C" E" u2 c; ?, B  C4 b* g- U+ y   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。
3 W/ ^: r# g- t# O) E
! Y) e) y6 U# G% L8 G### 结论
/ l$ D* a. ^' l0 ]2 {& }) X1 }8 }. n# {  r$ u  h* {
这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。2 F, H6 R$ ?( I6 z
# ^* P1 n9 U' B0 b

1 e3 @" r/ D: H* @3 o2 ]% Y* |0 Y& \7 C! ?& Q, {2 ^  }* u$ V

0 u, d" c& m- s! P- O' E4 j

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-8-22 16:06 , Processed in 0.451285 second(s), 55 queries .

回顶部