找回密码
 立即注册
首页 资源区 代码 manim边做边学--显函数图像

manim边做边学--显函数图像

烯八 3 天前
在Manim库中,FunctionGraph类是一个核心组件,专门用于在坐标系中绘制函数图像。
FunctionGraph的主要作用是将数学函数以直观的图形形式展示出来,使得复杂的数学概念更加容易理解。它广泛应用于数学教学、科学演示以及数据可视化等领域。
典型应用场景包括:

  • 数学教学:直观展示函数的基本形状和性质(奇偶性、周期性、渐近线等)
  • 物理模拟:可视化运动学中的位移-时间图像、速度-时间图像
  • 工程应用:绘制信号处理中的波形图、控制系统中的响应曲线
  • 算法演示:展示优化算法中的目标函数、机器学习中的损失函数
本文将详细介绍FunctionGraph的功能、参数和应用场景,并通过实际示例展示其强大功能。
1. 主要参数

FunctionGraph的主要参数有:
参数类型说明functionCallable[[float], float]必需参数,要绘制的函数(如lambda x: x**2)x_rangeSequence[float]定义域,如[-3, 3]
或[-3, 3, 0.1]
(起点、终点、步长)colorColor曲线颜色,默认为WHITEdiscontinuitiesSequence[float]函数的不连续点列表use_smoothingbool是否使用平滑处理(默认True)dtfloat参数化步长(影响平滑度)t_rangeOptional[Sequence[float]]参数范围(高级用法)其中,function是核心参数,表示要绘制的函数。
它是一个可调用的函数对象,通常是一个lambda表达式或定义好的函数。
2. 主要方法

FunctionGraph的主要方法有:
名称说明get_function返回用于绘制图像的函数对象。这在需要获取或修改函数时非常有用get_point_from_function根据给定的参数值,返回函数图像上的对应点。这在需要获取特定点的坐标时非常方便3. 使用示例

下面通过几个示例来演示如何使用FunctionGraph来绘制函数图像。
3.1. 正弦和余弦函数图像

这个示例展示了如何绘制正弦和余弦函数的图像。通过指定不同的颜色,可以清晰地区分两个函数。
  1. # 绘制正弦函数图像
  2. sin_func = FunctionGraph(
  3.     lambda t: np.sin(t),
  4.     color=BLUE,
  5. )
  6. # 绘制余弦函数图像
  7. cos_func = FunctionGraph(
  8.     lambda t: np.cos(t),
  9.     color=RED,
  10. )
  11. self.play(Create(sin_func))
  12. self.play(Create(cos_func))
复制代码
1.gif

3.2. 函数的平移和缩放

这个示例展示了如何通过move_to和scale方法对函数图像进行平移缩放操作。
通过这种方式,可以直观地展示函数图像的变换。
  1. # 绘制原始函数图像
  2. func = FunctionGraph(
  3.     lambda t: np.sin(t),
  4.     color=BLUE,
  5. )
  6. self.play(Create(func))
  7. self.play(func.animate.move_to(UP))
  8. self.play(func.animate.scale(0.5))
复制代码
2.gif

3.3. 复合函数图像

这个示例展示了如何绘制复合函数的图像。
通过将多个函数组合在一起,可以生成复杂的图像,用于展示函数的叠加效果。
  1. # 绘制复合函数图像
  2. composite_func = FunctionGraph(
  3.     lambda t: np.sin(t) + 0.5 * np.sin(7 * t) + (1 / 7) * np.sin(14 * t),
  4.     color=ORANGE,
  5. )
  6. self.play(Create(composite_func))
复制代码
3.gif

3.4. 动态展示函数图像的变化

这个示例展示了如何动态展示函数图像的变化。
通过在每一帧中更新函数的定义,可以实现函数图像的动态变化效果,非常适合用于展示函数随时间的变化。
  1. # 定义一个动态变化的函数
  2. def dynamic_func(t, time):
  3.     return np.sin(t + time)
  4. # 创建一个动态函数图像
  5. dynamic_graph = FunctionGraph(
  6.     lambda t: dynamic_func(t, 0),
  7.     color=TEAL,
  8. )
  9. self.add(dynamic_graph)
  10. # 动态更新函数图像
  11. for time in range(10):
  12.     new_graph = FunctionGraph(
  13.         lambda t: dynamic_func(t, time),
  14.         color=TEAL,
  15.     )
  16.     self.play(Transform(dynamic_graph, new_graph))
复制代码
4.gif

4. 附件

文中的代码只是关键部分的截取,完整的代码共享在网盘中(function_graph.py),
下载地址: 完整代码 (访问密码: 6872)

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册