QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3998|回复: 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);* P& u\" E  B+ K7 d- ]1 \2 m
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on) [, ]; @& n/ Q  N# ?) M
  3.       for n=[8:2:16]
    % R: V0 ^- H* G5 t+ z1 J5 L! F
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)\" X9 L4 S) M  X7 g; A. x. S
  5.       end
    , i' z6 K: H8 J8 l/ p# x3 u
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:. Q! z* H. I! O% D& t* {# H4 Z

1 x0 T/ }- @' z2 K2 d$ i3 c; p; z( l### 代码解释. _& p( U7 S, ~& j- C( c
! j" C& _. d$ a: h8 f; E% Y: e+ H
1. **定义 x 范围**:
& T% J, G: w: I% h% m& r' p% z' E   ```matlab( B: e4 x( {! R# n! I
   x0 = -2*pi:0.01:2*pi;
* g0 v( s, |( r" `. k! I9 Y   ```5 A5 v: @9 N0 c2 \
   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。& e1 h# T# S+ `2 @* Y

, c5 z* I' o  {! \. N2 ]' b2. **计算 sin(x0)**:
; h0 d; x' N6 o1 }4 o   ```matlab
. z* o2 F$ b$ L" |. o& `   y0 = sin(x0);& H/ M* T- U2 ^+ K7 i8 d
   ```
1 L+ G. ~$ _% Y; Y! Z   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。
; o+ r4 A8 Y8 F4 Y, d  ]" T
/ G5 K6 [& p/ d. [# n3. **定义符号变量和函数**:/ U8 L; U* R$ z! u' W! c
   ```matlab( |* ]0 K* s4 b% v# R# p  S& V
   syms x;4 h; ]0 F2 m; N8 d# E1 W
   y = sin(x);
, f( C  D; m# i5 U6 ?1 c   ```
- L/ h3 B; Z) Y8 J( C   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。& s  b3 V; O* S* u' Q7 M

# N$ ]0 `9 Y( k; w9 J2 ^6 ?0 r6 _4. **绘制 sin(x) 图形**:
/ z( x: Q# F% U6 V& c   ```matlab0 k' H1 V0 H2 `/ ~; ~
   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on
6 z7 d3 q$ o5 T9 o   ```) O. h# O8 c* U& n9 i9 a/ r
   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。
, p/ f: W- o9 o+ [) a   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。; J  v0 y/ i, {9 m6 C+ _
   - `hold on` 使得后续绘图不会覆盖当前的图形。
  a" r0 ^7 Y, L7 Z
% d5 ~7 `# [1 r: D, y4 y1 S5. **进行泰勒级数展开和绘图**:: B; t2 d- D$ x' h" f1 N
   ```matlab
( X& W! G' H+ X5 ^. N4 {   for n = [8:2:16]# x. L& o' e& z4 a5 i
       p = taylor(y, x, n);
: c) K  r7 o% j6 q       y1 = subs(p, x, x0);
* v7 _# R& O$ _" V: |, o( h# Y: X) S2 ?       line(x0, y1)( j+ p. \& d! b7 y- O) _* c8 B* k
   end% ~) O0 c/ s# M+ V" d
   ```* B( _# ?9 L( L, M5 f7 K
   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。6 k/ I. k: p1 e2 K5 I2 N4 Z
   - 在循环内部:/ x5 _) c% m" v* U$ q; m
     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。
+ ^8 @; \  ^+ v+ y& r; T     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。; V: f! |* d6 [% o* X+ r
     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。9 N2 i" ], O4 B9 O# u  `

0 o9 V) e9 {8 L6 |  m### 效果
" u& x! ?; O* |0 `' `7 K- M7 W9 X4 q! I0 x! {
- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。% H+ n( Z! {! ~3 l$ V

/ ], L9 V* Y' C1 u### 知识点总结2 g/ f! h1 ?" [" W# L2 v4 V
/ f8 O7 \; c* m( c* o7 \
1. **泰勒级数**:8 T4 o0 @5 j( j% u; `- a: a) L
   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。8 x% \6 N1 x( L! c

( E+ c- H8 s# p" R+ l9 [2. **符号计算**:. x' y8 Z$ j. I% @
   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。
( f  r) Q  G& A) H& N. h/ {8 y& H4 a  k# m: l6 K0 [
3. **绘图与数据可视化**:
6 H* G/ y2 l1 Q" Z" |! _( Y& V   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。
; Q" q3 N1 C8 u) _: i' z0 m! x5 N: d2 p4 l) M# s& ]1 P2 x& X3 r
4. **遍历与替换**:
$ i$ D( T# w5 v' o. i: A( s   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。
& S& J/ _4 I' O- c& y: V  ?2 E
3 h7 _, H. Y1 [1 Q### 结论
  X3 B1 p- ^1 }3 Q2 Y3 T
0 t( m$ r: I8 j# w3 h这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。* v5 F7 w4 d4 G. ~
! S3 f2 H5 s. u9 Y4 [5 G2 w
' `3 M! ]# F) C' k

% _: `* G0 b( V! S. H
+ l4 X8 q! t! @0 _# Y

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-9 22:53 , Processed in 0.542822 second(s), 55 queries .

回顶部