2744557306 发表于 2024-8-27 11:05

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

x0=-2*pi:0.01:2*pi; y0=sin(x0); syms x; y=sin(x);
      plot(x0,y0), axis([-2*pi,2*pi,-1.5,1.5]); hold on
      for n=
         p=taylor(y,x,n), y1=subs(p,x,x0); line(x0,y1)
      end
      这段 MATLAB 代码通过泰勒级数展开绘制了正弦函数的逼近。下面是代码的逐步解释:

### 代码解释

1. **定义 x 范围**:
   ```matlab
   x0 = -2*pi:0.01:2*pi;
   ```
   - 这行代码创建了一个从 \(-2\pi\) 到 \(2\pi\) 的向量 `x0`,步长为 0.01。这个向量将用于计算和绘图。

2. **计算 sin(x0)**:
   ```matlab
   y0 = sin(x0);
   ```
   - 计算 `x0` 中每个值的正弦,并将结果存储在 `y0` 中。`y0` 将是 `sin` 函数的实际值,用于绘图。

3. **定义符号变量和函数**:
   ```matlab
   syms x;
   y = sin(x);
   ```
   - 使用 `syms` 创建符号变量 `x`,然后定义符号函数 \( y = \sin(x) \)。这个函数用于后续的泰勒级数展开。

4. **绘制 sin(x) 图形**:
   ```matlab
   plot(x0, y0), axis([-2*pi, 2*pi, -1.5, 1.5]); hold on
   ```
   - 使用 `plot` 函数绘制 `y0` 关于 `x0` 的图形,即实际的正弦波。
   - `axis` 函数设置坐标轴的范围为 \([-2\pi, 2\pi]\) 和 \([-1.5, 1.5]\)。
   - `hold on` 使得后续绘图不会覆盖当前的图形。

5. **进行泰勒级数展开和绘图**:
   ```matlab
   for n =
       p = taylor(y, x, n);
       y1 = subs(p, x, x0);
       line(x0, y1)
   end
   ```
   - 使用 `for` 循环遍历 `n` 的值,从 8 到 16,步长为 2(即分别为 8、10、12、14 和 16)。
   - 在循环内部:
     - `p = taylor(y, x, n)` 计算在点 0 附近的 \( n \) 次泰勒级数展开,得到多项式 \( p \)。
     - `y1 = subs(p, x, x0)` 将泰勒展开多项式 \( p \) 替换中 `x` 的值为 `x0`,以计算对应的 `y1`(即泰勒多项式的值)。
     - `line(x0, y1)` 在当前图中绘制泰勒级数的结果。

### 效果

- 代码运行后,会得到一幅包含原始正弦函数图像和不同阶次的泰勒多项式的图形。每个泰勒多项式的图形与正弦函数重合得越近,表示这一级数的逼近效果越好。

### 知识点总结

1. **泰勒级数**:
   - 泰勒级数是表示函数的一种多项式近似,适用于在某一点附近的函数描述。

2. **符号计算**:
   - 使用 MATLAB 的符号工具箱,能够对符号函数进行解析计算并获取多项式形式。

3. **绘图与数据可视化**:
   - `plot` 和 `line` 函数用于展示函数图像,`hold on` 功能允许在同一图中叠加多个图形。

4. **遍历与替换**:
   - 通过循环和 `subs` 函数,可以对多次定义和计算的函数值进行有效处理。

### 结论

这段代码展示了如何利用 MATLAB 对正弦函数进行泰勒级数展开,并通过可视化的方式展示其近似效果。可以通过这个示例了解泰勒级数的适用性和效率,同时为函数逼近与数值计算提供了直观的理解。




页: [1]
查看完整版本: 通过泰勒级数展开绘制了正弦函数的逼近