You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Matplotlib实现泰勒级数项数动态更新的曲线动画?

实现泰勒级数逼近复指数函数的动画效果

完全可以实现这种逐帧动画,借助Matplotlib的FuncAnimation模块就能让每帧对应不同项数的泰勒级数曲线。下面是修改后的完整代码:

import math
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

def func_cos(x, n):
    cos_approx = 0
    for i in range(n):
        coef = (-1)**i
        num = x**(2*i)
        denom = math.factorial(2*i)
        cos_approx += coef * num / denom
    return cos_approx

def func_sin(x, n):
    sin_approx = 0
    for i in range(n):
        coef = (-1)**i
        num = x**(2*i+1)
        denom = math.factorial(2*i+1)
        sin_approx += coef * num / denom
    return sin_approx

# 复指数函数相关定义
i = 1j
e = math.e
x = np.linspace(0, 10, 1000)
fx = e**(i*x)

# 初始化画布与绘图元素
fig, ax = plt.subplots()
# 绘制参考曲线(复指数函数的轨迹)
ax.plot(fx.real, fx.imag, label='e^(ix)', color='gray', linestyle='--')
# 初始化泰勒级数曲线,后续逐帧更新
taylor_line, = ax.plot([], [], label='泰勒级数逼近', color='blue')
ax.set_xlabel('实部')
ax.set_ylabel('虚部')
ax.set_title('泰勒级数逼近e^(ix) (项数: 1)')
ax.legend()
ax.axis('equal')  # 保持坐标比例一致,避免轨迹变形

# 动画更新函数:每帧更新对应项数的泰勒级数曲线
def update(frame):
    # frame从1到50,对应泰勒级数的项数
    taylor_vals = np.array([func_cos(x_val, frame) + i*func_sin(x_val, frame) for x_val in x])
    taylor_line.set_data(taylor_vals.real, taylor_vals.imag)
    ax.set_title(f'泰勒级数逼近e^(ix) (项数: {frame})')
    return taylor_line, ax.title

# 创建动画:frames设置为1到50,interval是帧间隔(毫秒)
ani = FuncAnimation(fig, update, frames=range(1, 51), interval=200, blit=True)

plt.show()

关键说明:

  • 引入FuncAnimation:负责生成逐帧动画,指定更新函数、帧序列和帧间隔。
  • 初始化绘图元素:提前画出参考的复指数函数曲线,泰勒级数曲线初始为空,后续通过set_data逐帧更新数据。
  • 更新函数逻辑:每帧的frame参数对应泰勒级数的项数,计算对应项数的逼近值后更新曲线,并修改标题显示当前项数。
  • blit=True:只更新变化的部分,提升动画流畅度;interval=200表示每帧间隔200毫秒,可根据需要调整速度。

内容的提问来源于stack exchange,提问作者AG-88301

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:09:49