QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4013|回复: 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);2 p. e3 ]1 J, m: _# g* [9 E: I
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
    2 z! D3 f0 L3 g  s
  3.       for n=[8:2:16]& e9 C, D+ o5 E; s. @9 S\" {$ h
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)* X\" ~' i1 T$ ]; w  O9 ]
  5.       end: I1 J; S* o5 n- X3 c' b\" \
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:* `: D* \6 m( ^, G! ^" P

1 C1 i" f# J3 K### 代码解释. ?4 _3 j( j3 d, {
& r- D6 X9 |3 m5 m; o
1. **定义 x 范围**:
( G6 u; x6 M: w( D0 }   ```matlab
1 D* b* i2 g. K  s- B   x0 = -2*pi:0.01:2*pi;
1 U# @. i3 v2 M+ C   ```9 c7 Z$ }/ }! U4 ^
   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
7 F; \9 F# D  g* f; [3 F
3 c2 T8 i& D8 U" T2. **计算 sin(x0)**:
: L$ L6 u! M' t2 l  ]' x# B   ```matlab
" g+ R" r+ A$ d9 t/ M( x3 R% F   y0 = sin(x0);' r6 c5 A1 S/ u+ K" n
   ```; o- n& q, g/ A& x/ G
   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。
! H" w6 E/ |/ D/ [1 X6 V- M) f$ h- K) Z# ^7 ?0 a
3. **定义符号变量和函数**:
% O' y4 ^. ]0 n* U3 V/ w   ```matlab
( C4 [/ R# i+ X( W7 P5 n   syms x;
% M+ z5 N" {2 s- N4 _. P   y = sin(x);) A$ Z2 P5 f* X: Z/ t0 e
   ```, e( D# R7 W8 ^% n
   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。
, e1 K7 W: b9 e- l
: A# o% {( y+ S! g( c  d  W9 {3 a4. **绘制 sin(x) 图形**:+ ?# c5 }  F; k7 j  A4 Q/ |
   ```matlab5 W7 j3 v* m/ k* i" A
   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on
/ {7 A. J+ ?' \   ```% k3 x. s2 T" Y5 a
   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。5 o- y( [* W$ ~8 z% ?+ o: X( O0 m
   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。6 a  c* T" k6 Z; M! ?. K
   - `hold on` 使得后续绘图不会覆盖当前的图形。
$ t/ E. [9 l5 R; C0 k, S! u4 O, |8 v0 g: o4 k
5. **进行泰勒级数展开和绘图**:, \- [( y/ n0 x. G) t! h
   ```matlab
; t! }8 k! [, B' |; p7 a1 D, E   for n = [8:2:16]
7 H) t1 y* g, S  |% X       p = taylor(y, x, n);+ E. m' H0 n3 T" Y$ w* m
       y1 = subs(p, x, x0);  [2 s9 p0 w- a# @: [  u  \3 w
       line(x0, y1)
' ]) T! W0 v7 N8 Y6 S) U   end' A& ~; t" {0 p: j" U
   ```) Q+ B4 J. P- f2 i: O6 s  K
   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。( N7 h3 [* o7 J2 h+ x9 [
   - 在循环内部:
, U0 u2 ]/ b3 u" P6 R" j, [     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。- u6 l7 `5 i4 t% h. h
     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。
1 D- t  f0 U( M1 e0 T     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。8 ~; A4 k) |4 r/ N" I0 Z8 N

% ^) ]3 F! E+ u' D' B; w### 效果
. M, G0 z' p# U" X! b1 m; W0 c* a: W: e% Y0 Z! O9 ]# p$ y
- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。6 T# \9 W" f6 q; l; X

( |- L3 f- q9 `9 E' C$ D### 知识点总结
9 T% a& l. B+ v4 g
) h& n* U. U+ n- ?' k% k1. **泰勒级数**:
/ [/ E1 W. }: v3 f; ]- ~   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。
# @5 j8 `, B0 S9 `' w- R( W% K0 [0 ?2 [( M) m+ g7 u- }4 o. E
2. **符号计算**:
9 T$ a* n6 _& n# O* O  s( {   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。/ B! a% ~3 A3 M5 O9 ?) l: ^
' s- y7 c3 T5 U# t
3. **绘图与数据可视化**:6 a' g  K8 S; H0 f6 `6 p, ~8 l
   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。
  S  G0 ^7 }! ~& y0 k) E
4 A0 e. C+ [- K2 n5 X" z6 H4. **遍历与替换**:
- ]4 p3 w2 g; W* R   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。$ h4 j0 x$ j2 D

7 E+ b, c; g! p3 L### 结论
1 E" R7 D- ?6 Z4 J- u
% z9 e& S. N9 `6 f, Y这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。4 n6 Z$ e: Q# i' ^. t) w
4 e4 g- W, M" |) P$ @$ n+ }

5 j7 N+ D* V% ^+ L% D3 d
- X: F9 `2 L: p  k( Q4 A2 [2 p. G9 B" D* V2 l3 q: \) [

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-31 04:40 , Processed in 0.302975 second(s), 55 queries .

回顶部