QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4098|回复: 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);* Y' }: t7 v1 f
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
    \" r5 S' S$ e+ ^1 Q5 K
  3.       for n=[8:2:16], C5 L  S0 d/ A* ]
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)
    % J) L) C1 d\" m6 v9 ]- G
  5.       end
    7 A8 b  Y; K$ Y8 s7 R
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:
" ~8 ^2 h8 r% _4 C3 `4 q: o
% ^6 L/ ]% x; d- N2 x, j7 b" F### 代码解释1 p: V1 i' \0 m6 W1 s  ]. t- u+ I

  v& J' ?% Y9 O8 v+ Q" t. {1. **定义 x 范围**:
9 G, T' V4 D, Z5 k+ l   ```matlab
: H& y, ^7 p& j$ q# a" J   x0 = -2*pi:0.01:2*pi;
3 p8 x0 A" ~: @% i5 o2 X" q   ```$ j" T8 t" N! J7 P* _/ V
   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
% r# v! P$ I( D9 L2 x5 v: q- |7 Y+ S
2. **计算 sin(x0)**:
( \4 C, H3 N8 f: f/ N& Q# G   ```matlab; k" U5 x" o0 }# q) |! H
   y0 = sin(x0);
  E/ Y: g5 v' _. R4 T6 K   ```
; |4 C4 ]2 ~9 ]6 C  M) K* n0 |6 B5 W+ f   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。
) A! G- b. J3 A+ h* U8 `* y" W* w  o7 ?8 u( l
3. **定义符号变量和函数**:! S" n) a7 T- d9 l. u9 D/ H8 P
   ```matlab& s1 a* C! L! I) I8 h6 }6 B- a$ {
   syms x;! s( a* S( |/ ]
   y = sin(x);
, H0 ~$ y( E, c2 o   ```
6 @% B3 J5 X$ f' k( G   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。# r$ S. X* O+ M4 L' Z, T! L

4 d) p, {3 i5 [: m2 J+ w( }$ l3 ^2 \4. **绘制 sin(x) 图形**:
- Z, }- E8 M6 [   ```matlab
% f- t% ~9 j) i0 s' O- ?   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on- \: K, z. O* H, e1 R. r, _3 k
   ```7 C2 V5 i) F+ o
   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。
* z1 p3 B8 S" w& Q8 y  U/ N   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。
6 ~. N( @( r: E  z* I   - `hold on` 使得后续绘图不会覆盖当前的图形。! f/ _* Z' M/ f! B7 O

' n9 c' w$ }) Z6 k( q; }5. **进行泰勒级数展开和绘图**:
, l, m% m1 m/ I3 Y6 o7 h   ```matlab- V+ ]1 J2 M/ h8 ^' ^
   for n = [8:2:16]
* n3 t# G. D* T* x* e( x- c' }       p = taylor(y, x, n);
. o( |9 Q4 c* s/ W8 K8 p       y1 = subs(p, x, x0);' N8 t$ y' G7 J2 m  p* d+ m, |
       line(x0, y1)
/ ^' }, Y  s2 }  d  H$ T1 H   end
1 F$ L9 T4 s  D% b   ```
- _8 i( ]* E% s% q4 E+ Z- `$ e   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。& O0 f. B) P0 f# _
   - 在循环内部:; f& B% @$ `9 k
     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。
- h- R" G, D# D0 g- o" Q. E6 t! r     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。$ w, f, Y% o- M3 ^: |$ ?6 u
     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。
, A, M2 \# b# n' a4 G) k! S1 T: K' }. r
### 效果
4 z5 F$ N  S. F- a. I, y  s6 Y# @2 |0 d$ Y. ?4 j+ n3 b( _
- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。
0 G. }1 l" M' T) P4 {- ~
6 B: X1 G9 B( [$ ^8 m3 ^  t### 知识点总结- b1 o* S. Y! w' M- ~
  C" ~8 ^: c- X, Z5 h- J
1. **泰勒级数**:( k4 m) u" E. d" F" i! E4 o
   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。1 M2 t' K- A! p2 p) H* J
$ r$ N1 a9 q! {1 f+ z
2. **符号计算**:7 s2 X: Q5 K0 P0 j1 }
   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。& E. D6 _3 y; D8 h/ c
8 Y' ]; P& i! S1 j5 e; X0 e0 e( N
3. **绘图与数据可视化**:
' G: w  g  X/ R: r   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。
" K* E. n4 {! i3 l$ N! p
9 ?, x/ g2 u# j( r; J8 R5 Z4. **遍历与替换**:5 c# Z& V2 Y+ u/ C* z9 k
   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。- G# g5 w8 P7 N

$ I: W8 i0 u$ d0 f1 B+ S: ?### 结论
# ^  j" t1 i" x5 D  J6 y' z- M
* h% e, H  Y+ o1 j( T. T这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。) n! q' z8 J* g0 y

. j) z. N, y  ~' P* j, |8 J; U! S5 T2 B$ m
1 F0 w) \1 r  u' p2 \- v

3 h8 N! n% y5 W6 |) P( h* L6 Y0 t

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 21:18 , Processed in 0.411524 second(s), 55 queries .

回顶部