QQ登录

只需要一步,快速开始

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

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

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

1198

主题

4

听众

2977

积分

该用户从未签到

跳转到指定楼层
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 P7 u) ~7 _9 w8 q
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
    * p3 P* }% F0 F4 M+ l5 X
  3.       for n=[8:2:16]. _% P5 H1 _' g0 B% V
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)
    ) L/ i9 x4 b4 f\" c  ^& y; t2 f
  5.       end
    2 G' \& E5 q$ T% P  v2 L+ G
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:
+ O% u/ U# B5 T9 C' D% t2 @9 a" ]2 s
### 代码解释
6 _3 @- A3 h* z8 R2 M% l5 P! v# P9 h1 g, x& F% r
1. **定义 x 范围**:# d, {$ @8 ]+ R
   ```matlab& G3 j& [" z; C$ ~9 P3 l9 p; @
   x0 = -2*pi:0.01:2*pi;7 B8 z5 a/ j6 e
   ```1 w4 `2 k  k9 [0 t  {
   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
+ {$ q6 b9 V) A& x) ^5 ?" a$ X/ A% W/ E2 e4 i4 O& J  B1 `) I5 r
2. **计算 sin(x0)**:
4 Z/ \- B8 C2 ^  E- u) o   ```matlab
! i2 A6 j: S7 i3 V8 v% Z   y0 = sin(x0);3 u8 ?, T: E& E: X
   ```" N7 O% L& L7 x
   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。
1 G0 v. s" o- J# [4 T  V; _. {) O
" P$ A9 ^2 {7 G5 V/ S; b3. **定义符号变量和函数**:
  ^0 @$ S; V0 h   ```matlab
; d- t/ Z! t* \2 O5 F   syms x;& U1 n$ t- [  \
   y = sin(x);
% |4 R0 M& B: R+ L, w3 Z6 e( x   ```
, k% J. h& M& N; }2 o   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。) C+ I2 u% |" \* N; U3 |! h+ U; z4 w
6 {1 S; ^$ c. i
4. **绘制 sin(x) 图形**:7 b' `9 a* q; A
   ```matlab
0 i3 {* f# U- x/ o1 I   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on
/ Y; h: ]$ Z: d   ```
; c8 l6 ]0 N% E/ e3 e/ U+ m! Z, U   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。/ R9 A+ a1 U2 h- Y' g
   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。1 [' S' g* z; t5 z% E1 Z- q
   - `hold on` 使得后续绘图不会覆盖当前的图形。
+ i. v" x( Z# [" G) o& }0 d
* H! O! t. \% n. D$ d, \5. **进行泰勒级数展开和绘图**:
4 W9 m2 E# f) L  }3 ^   ```matlab5 A9 R/ c3 B  F/ x  n
   for n = [8:2:16]
; z+ `, B2 V1 t6 M" n: E4 E& D       p = taylor(y, x, n);, Q" h1 @* m/ {  L6 \" P9 p
       y1 = subs(p, x, x0);
9 F* W4 H5 B3 @+ x. d8 h       line(x0, y1)3 Y/ z$ k( S$ {$ {6 Z/ U* Q* {$ z0 B
   end; `! |% a3 f( f% g$ K2 f
   ```
& y$ j/ H1 r5 q  j   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。
  I% B9 \2 O* n2 }1 Q# s   - 在循环内部:# S0 @7 O! U) @
     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。
, b' Z4 y0 S- U3 X* G/ A8 T     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。
  X9 I( b' E! M# a" R     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。9 s6 G8 I7 U( [  C/ ^6 a
6 B# U5 w% X) e; t: K
### 效果7 r0 y4 t) h# e6 P, Z; @3 c8 \

* C2 @& o( ]3 v9 H! u, \- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。$ W& ]6 ?: |9 a( V6 e
- [, M, T- A6 }) a
### 知识点总结4 G! n. c' B/ {$ s
# {: V, Y6 @9 q- X# `4 ~; ?% m2 ?+ @
1. **泰勒级数**:
( `* o) G! f3 z) I   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。. k0 I' A7 f4 h+ N9 \& t0 I
$ z) U; ^+ R& t- t
2. **符号计算**:2 Y* D  p& D& q4 k1 r. G6 e
   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。2 O3 T5 \1 U8 f  J

5 l9 J/ Y! \- p# z, s5 i3. **绘图与数据可视化**:
' l9 |! O' \+ C% c   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。# I% U* m* y* q. X, k
7 n2 e: `3 P9 q. F0 R7 t1 q
4. **遍历与替换**:& p. |& W# a2 @) w
   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。& Z% v/ q6 T; E

. I6 p% h& p- b4 t8 P5 d* Q3 Z### 结论/ Q1 {7 |3 S- j

  d4 c7 ]' S  {; z这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。
+ _6 V! N" W; B" P0 F
' v3 h) u8 O2 c; R2 b8 R9 d2 R1 e/ @/ h3 K

2 \# Q8 R# v4 }- Z$ y) Y: R4 v% C9 |9 g

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-24 20:32 , Processed in 0.545229 second(s), 54 queries .

回顶部