QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3978|回复: 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);
    ! L\" W0 l/ w- n! B
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on# M, g) M! @5 M! K  ^2 i2 _/ ?# a
  3.       for n=[8:2:16]2 N9 E7 y8 L/ |  Z
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)
    , E8 y( H$ f0 E\" e\" C
  5.       end
    1 k& d9 |# H6 u. H
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:
7 a" [+ M1 A. {7 F- z! a) M& w+ O3 s- Y3 f# P
### 代码解释/ T" ]4 p% R6 G1 p& C

$ n! L$ F0 I$ W1. **定义 x 范围**:
3 P& S: o  N7 B% p% K   ```matlab& P& ~! ?5 C+ n7 W+ |( {
   x0 = -2*pi:0.01:2*pi;
1 t5 j/ @; l. M1 k   ```; r% X# C1 _8 V8 e5 y
   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
1 Q: ?0 {' @" b' v1 }! ]1 L9 V/ t/ j& g% o
2. **计算 sin(x0)**:
& v1 d" |% x2 X   ```matlab9 C9 y0 m2 k# q+ T& b9 P7 c
   y0 = sin(x0);
- ^3 o2 l& M) V6 l6 Q. p" ]   ```' n. Q' S5 ?1 j- s5 m0 y. n
   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。) z3 R( X! ^- p3 U: t, I- s6 \; ^
* n6 c: Q: Y: {
3. **定义符号变量和函数**:
: @/ W  q/ u, _/ a   ```matlab- F! V7 M1 q4 Z/ h) n" S! }
   syms x;8 X- V& D( u! g1 M
   y = sin(x);
7 f* Z- M% h% N2 F; A# d   ```
% Y3 q: b  c4 u. R2 Z# @   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。
( l& I4 ], y" V3 x( {) ]6 j! q: R: ^3 |1 B
4. **绘制 sin(x) 图形**:
  V: T* P+ _# O   ```matlab
* Q2 F) z2 J0 T2 U5 Q2 K1 ]/ R   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on
, ~" c5 C6 D( [' I; D* l* \* d* j   ```
' W$ D) e6 B* z2 ?6 ]! U   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。
! ?! T7 s( a) W5 l   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。, U0 O- [$ y0 L5 u4 e
   - `hold on` 使得后续绘图不会覆盖当前的图形。
8 p2 ~% n) y2 v# [; F8 d3 u" u) p1 e" H% {
5. **进行泰勒级数展开和绘图**:9 O8 g5 j2 @* G7 K. Q
   ```matlab
. t! w$ D& J% z7 l8 o+ Y   for n = [8:2:16]4 U* w2 b2 A9 n
       p = taylor(y, x, n);  p# [0 w( C+ {! b4 Q' f
       y1 = subs(p, x, x0);* q; g' W6 m$ _
       line(x0, y1)
2 F3 e1 S9 |  U! ?0 L" m- B   end
7 d" Q2 |1 Y6 V/ W/ J$ q   ```% j' z& V/ Z' X
   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。
2 s" ?2 _. z! K% ^   - 在循环内部:
! u, t9 x( B; W     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。
$ t0 |2 \! {9 E) {  o2 G2 |6 p     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。3 I6 d, c5 A/ t  w0 S( d6 m% W
     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。1 |% K" w$ ?" C( J) D  P7 k2 J6 v4 p

& l% ?8 q7 l8 J2 s7 L' ~### 效果4 ]1 L: ]; D) o' o

" `$ j' U4 G- K- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。
9 M- k- d: `" I  ^+ N, c% s" A0 v9 p9 b* H$ {. x! x: e% ^
### 知识点总结: v, ?$ ?" e8 C& d3 J

. }. e4 f( X8 r4 h9 d: e6 f1. **泰勒级数**:
: s4 Y, y/ T4 j. M2 m8 P) L8 U   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。
5 q) e# t8 b1 F5 n+ X
# ]+ J! |# {0 t( J5 |2. **符号计算**:
# m3 b# N; |5 \% f1 |2 M$ c, l! I   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。
. u; l# O' O6 t% x$ ?2 i' S8 L- |6 q" L* V0 u
3. **绘图与数据可视化**:
3 b+ k/ p7 n5 {$ L, X   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。7 h7 f: ~7 [# T) X* }+ ~; f. P8 P

. I+ G$ B; D* t+ @; n, B1 t. O4. **遍历与替换**:5 O  h2 w! r5 s5 R; t; ?
   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。
; _$ L. m- }/ C: c/ C3 K3 H$ G% S- ~2 G. e. k
### 结论
8 U& U! w; \( u- }6 V4 U% a( O% O! f+ N" M4 ?% d$ x
这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。
% E& F+ j4 G1 n% G3 V) _5 Z' n% P! m' n. @. q. S
: t! e1 A. o) c" ?1 T! J: f8 r8 |
% s& a) v: T! L& O0 k* H. P
  @6 F8 u% d, E- O

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-6-11 07:01 , Processed in 0.611576 second(s), 55 queries .

回顶部