QQ登录

只需要一步,快速开始

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

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

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-8-27 11:05 |只看该作者 |正序浏览
|招呼Ta 关注Ta
  1. x0=-2*pi:0.01:2*pi; y0=sin(x0); syms x; y=sin(x);
    & s; I! X4 R7 N; z
  2.       plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
    ; q* _& e0 T\" Y9 o: F7 U
  3.       for n=[8:2:16]  d* D. {3 U/ ]* r) s
  4.          p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)
    8 B6 _% S1 X' M' [5 P. F. X
  5.       end
    ; V1 V7 ~& q! }  h* Y; T1 b
  6.       
复制代码
这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:
# l/ V7 }3 L7 q$ Z1 h2 G
/ U/ W  L8 @2 b) ^( i) u### 代码解释
4 _) w' [  ^( r6 P
9 C$ m  D* Y9 y( S6 }1. **定义 x 范围**:  _6 m, z% y; X& B! e
   ```matlab
/ |9 R# A# C7 B# p9 j   x0 = -2*pi:0.01:2*pi;
% b7 L7 c! x7 @+ P0 M   ```1 b7 F7 b! c0 L; }+ u
   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。
6 ]5 {! J* V+ F8 Y8 v; A' p% [' `) V! b" @+ {
2. **计算 sin(x0)**:; d7 E5 X- _" A4 J. Z, h* v0 m6 p' C
   ```matlab. m9 k6 ]' K2 j& f" A
   y0 = sin(x0);
5 f# T5 Y5 n: a   ```
% S- }4 j! X' L6 s0 ?* N   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。
4 K6 Z% {) s8 X  u& I2 b( w1 Z4 b/ `% e6 W) w7 p& L1 q
3. **定义符号变量和函数**:
3 K1 n' C2 j% p7 i7 X4 T5 s! L   ```matlab
# q# M% G  I% D2 S7 Y! F" W   syms x;- C  f, D1 E8 B6 v' Z5 t' E
   y = sin(x);
5 O- y6 B$ X- c4 I0 a8 h: T   ```8 y, ^3 r+ B( Y9 s7 J
   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。7 j5 i& N8 Z' z" s+ D3 ~

$ `! v8 V6 z7 c+ s7 h- H4. **绘制 sin(x) 图形**:1 X9 y% D( R3 q+ p7 S
   ```matlab
/ w  f2 ^5 ?2 v! ^  z9 ^   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on- h8 {+ y7 v& ^
   ```
* _# t2 Z) H7 {- I% J   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。
( L) [- e  T2 ]" _& N1 L   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。" O# c3 J/ `1 J# G3 p9 g2 ~
   - `hold on` 使得后续绘图不会覆盖当前的图形。. _. J: [1 R( e0 `/ q
) J7 P, q, g; s: s
5. **进行泰勒级数展开和绘图**:+ b/ t' S) ]+ {
   ```matlab
1 w% i. Q! m7 K9 R# _   for n = [8:2:16]% p% f6 V. G2 R" |+ ^
       p = taylor(y, x, n);
, \6 ^# Q  b& N& `3 r3 n, q# {+ x       y1 = subs(p, x, x0);4 j& E+ f0 e0 M# l% V, s& [, l
       line(x0, y1)5 S% s$ d0 i! u) o
   end
' A) _' s9 V% A: K: h0 o" `   ```; y9 I. X, A# b  k4 _4 r6 Y. U, S
   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。
6 u: m. {" W! Q3 V' o9 b4 p6 Z   - 在循环内部:; @( D6 R8 Y( T, M" u4 ~
     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。
( I$ T- A! G# p  ?     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。% w. I0 U/ u/ X/ W3 E
     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。1 v6 Q; T. @, Z+ q  e
0 u1 v9 }9 V: J! _- _
### 效果' @+ `% u. U7 u% W2 U- g4 z
( g' s8 n: A, m  L; F& k" [
- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。3 y- C3 t* A; ^$ G4 i
8 o; @# {* w" A0 p3 w
### 知识点总结  ~% o9 K" r; @/ j5 Z

8 _* ?+ ^3 ?1 u1. **泰勒级数**:' c; H% y( m9 L$ C4 @
   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。
7 K; U' ~# u1 D9 C5 ^9 g; ?) x' f2 h: {5 M
2. **符号计算**:# _9 b4 A- R# Z5 Z. Q/ K- q
   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。
$ z, G1 Z5 n. G* s0 d7 B, I- K+ ^. a9 x  F; i
3. **绘图与数据可视化**:
% J& t; q% f8 F   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。, B4 o& N2 D5 n2 K! K8 Q! q% |
# E2 w( X6 X$ I% `! [& x
4. **遍历与替换**:" C: y% W# U+ y" Z8 I8 D) y5 L$ G
   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。9 B% h, b7 F7 Q
' Y, D6 X! q( [/ N6 J
### 结论) J1 j2 N, `: W

1 i/ C; A0 C- O3 h% Z( X* J这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。
, r- o, r, `9 T/ A
; l; G5 j! f# q/ R2 w5 n! F$ H4 ~! f6 j% D3 A1 N

5 _! @, B* J3 b( a! v$ m- \0 F4 {9 L8 k

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-4-12 04:20 , Processed in 0.424724 second(s), 55 queries .

回顶部