QQ登录

只需要一步,快速开始

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

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

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

1198

主题

4

听众

2975

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-8-27 11:05 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
  1. x0=-2*pi:0.01:2*pi; y0=sin(x0); syms x; y=sin(x);3 {  W, k. f0 }2 I2 w9 q1 d. U
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
    , y0 ]) i) h' O8 r  u% Y7 r7 o
  3.       for n=[8:2:16]. b* E1 Y8 \/ A\" C; i; z
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)& e# d7 Q. X) y9 ^: n3 ~% z+ V
  5.       end
    8 s4 u% Y4 t! ^
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:; D" P! J3 x4 |" D3 W+ ]
0 N$ }" |$ M; g* {
### 代码解释9 ]  ~! l2 e3 D0 T% s

. O% @# ?3 n' a1 P* p1. **定义 x 范围**:" L4 S+ F* W4 h. ?2 m
   ```matlab
' n1 c/ C3 y  h3 u   x0 = -2*pi:0.01:2*pi;. q& w0 [" u  W1 [5 H
   ```) D  D9 }5 h- {+ K% L% p
   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
3 o" g6 D4 t1 x) {
9 ?( F# J6 I7 E% j3 T2. **计算 sin(x0)**:
  y+ ?# _- W9 W" L   ```matlab
1 g6 E* K+ {7 S. W3 ^. y8 b) f   y0 = sin(x0);
  ?% N" Y% c2 b, d% Q   ```. O0 V1 U- {2 m; e
   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。
9 b* H4 y) p* r6 m4 B* [! G' O# \& J- Y0 N$ H
3. **定义符号变量和函数**:! L$ o" l7 N- t/ W; n4 D
   ```matlab7 V2 Q6 y8 }/ r; h. V2 L" |; e8 r) a8 x
   syms x;
8 i* l  \; d6 ~# o1 p) ?   y = sin(x);) c: f9 V& y; O/ v0 O' \' M. @( y
   ```
  e4 v0 z5 D7 @& r. e/ J& X! t3 U   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。! M. e7 ]1 }2 g/ ~5 T- s" e

7 g9 {2 C* {% Z9 B/ y, {5 p4. **绘制 sin(x) 图形**:
$ f6 p9 f( H4 X) ]$ e( R3 @8 E   ```matlab, @5 p* ~4 t- ^( F% X2 B) \' K* P! m' E
   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on
- L2 o! f0 l/ e2 T" u5 N; V# F" p( ?   ```
+ z# b, `+ F4 H/ N   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。
8 V6 _6 D3 j# f& C( D; l$ v   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。1 v% b" `/ n0 A% D! |+ X$ ~
   - `hold on` 使得后续绘图不会覆盖当前的图形。& f  P  h6 A) O* H' q) d

. K/ Y. d& ?  x/ w, G5. **进行泰勒级数展开和绘图**:
. c8 G# @% b" C" j* m4 Z3 j6 c   ```matlab( T. P' [9 A; f% y
   for n = [8:2:16]+ m- b6 _( j! `
       p = taylor(y, x, n);" M  [! e/ m7 p
       y1 = subs(p, x, x0);) p" ?( {3 L$ G- j" \  U
       line(x0, y1)
, b: }) V1 ?- v& R   end+ d, ]+ j7 c5 o/ n5 l
   ```
# m3 m$ c+ N& B. q, J; l0 b   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。" W. [; @/ I- ]
   - 在循环内部:
" ?% P' D/ R7 n" c5 j* B     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。+ A+ r- H7 t0 b
     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。. P* L1 q) S- r, m. F* d0 s9 S) S
     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。7 y* f. [5 ^1 {; `- w

6 c3 z: ?! q3 ?3 w! Q, C$ z0 n6 Y. i: a$ A### 效果
: ^' ]# [. j8 X& E. `+ G" z8 w+ W) e8 C" Q
- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。; K  _/ N4 n4 R$ Q  k0 d0 W8 ]# z
# s5 y3 j) Q5 R/ ^, k6 k3 }9 Q
### 知识点总结
+ Q8 A% n% p5 w6 p8 h+ V  U8 {. G1 k: j6 B
1. **泰勒级数**:
7 |6 m" @2 o* w  c: @   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。9 a8 p! L6 T; E% [4 j

$ _) F$ q; d/ ]+ b# E# |: L& Y; m2. **符号计算**:. ?2 W( C. l( u" [/ ~/ J
   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。
; v( [( @( L3 d& @) j" Q3 L8 T8 ^2 |# A! O. x2 p, ^; w
3. **绘图与数据可视化**:  C7 i$ p, v& O, V( y7 I4 c8 C1 {
   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。
! A; [4 w- B- A) ?2 f" d" u. G7 x8 Q- l$ [: s0 U/ u
4. **遍历与替换**:, Q+ q* G8 L- Q9 X) u5 v
   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。
* S, w8 c; E" \  G3 }; E3 P
6 e2 f& P  c, ~, d### 结论
( b4 H/ G% O7 ]4 L6 h! o3 A" v2 Y  _4 b5 n% b# }/ g, h$ c
这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。
5 b1 L4 }3 m, M" P, g: w  N, b2 d$ `* j( F9 ^3 U" q4 H/ W: ?4 E' M- j
0 H' L* F+ ?4 h+ _' w1 V' W
* U- \' s' b3 c3 c1 ]
) ~3 L7 p8 d! I$ A- u& [

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-9-12 08:57 , Processed in 0.736317 second(s), 54 queries .

回顶部