烯八 发表于 2025-6-4 10:31:34

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

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

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

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

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

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

这个示例展示了如何绘制正弦和余弦函数的图像。通过指定不同的颜色,可以清晰地区分两个函数。
# 绘制正弦函数图像
sin_func = FunctionGraph(
    lambda t: np.sin(t),
    color=BLUE,
)
# 绘制余弦函数图像
cos_func = FunctionGraph(
    lambda t: np.cos(t),
    color=RED,
)
self.play(Create(sin_func))
self.play(Create(cos_func))
3.2. 函数的平移和缩放

这个示例展示了如何通过move_to和scale方法对函数图像进行平移和缩放操作。
通过这种方式,可以直观地展示函数图像的变换。
# 绘制原始函数图像
func = FunctionGraph(
    lambda t: np.sin(t),
    color=BLUE,
)

self.play(Create(func))
self.play(func.animate.move_to(UP))
self.play(func.animate.scale(0.5))
3.3. 复合函数图像

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

这个示例展示了如何动态展示函数图像的变化。
通过在每一帧中更新函数的定义,可以实现函数图像的动态变化效果,非常适合用于展示函数随时间的变化。
# 定义一个动态变化的函数
def dynamic_func(t, time):
    return np.sin(t + time)

# 创建一个动态函数图像
dynamic_graph = FunctionGraph(
    lambda t: dynamic_func(t, 0),
    color=TEAL,
)
self.add(dynamic_graph)
# 动态更新函数图像
for time in range(10):
    new_graph = FunctionGraph(
      lambda t: dynamic_func(t, time),
      color=TEAL,
    )
    self.play(Transform(dynamic_graph, new_graph))
4. 附件

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

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

忆雏闲 发表于 2025-12-12 03:16:23

用心讨论,共获提升!

糙昧邵 发表于 2026-1-15 08:55:30

yyds。多谢分享

嫁吱裨 发表于 2026-1-17 14:10:28

感谢分享,下载保存了,貌似很强大

稞冀 发表于 2026-1-17 20:13:07

感谢,下载保存了

忿惺噱 发表于 2026-1-17 23:32:21

鼓励转贴优秀软件安全工具和文档!

阎逼 发表于 2026-1-18 03:41:20

感谢分享

博咱 发表于 2026-1-18 10:59:17

感谢分享,下载保存了,貌似很强大

二艰糖 发表于 2026-1-22 08:41:02

东西不错很实用谢谢分享

常士 发表于 2026-1-22 13:32:21

热心回复!

官厌 发表于 2026-1-23 05:18:27

热心回复!

瞿佳悦 发表于 2026-1-24 20:59:58

用心讨论,共获提升!

巩芷琪 发表于 2026-1-27 16:51:25

不错,里面软件多更新就更好了

即息极 发表于 2026-2-4 03:39:25

过来提前占个楼

捡嫌 发表于 2026-2-6 12:38:03

分享、互助 让互联网精神温暖你我

捐催制 发表于 2026-2-7 04:08:30

这个好,看起来很实用

挺喽蹂 发表于 2026-2-7 21:07:08

感谢分享,下载保存了,貌似很强大

髭赌 发表于 2026-2-9 02:21:49

谢谢分享,试用一下

艾曼语 发表于 2026-2-9 03:52:04

谢谢楼主提供!

涅牵 发表于 2026-2-9 05:24:18

用心讨论,共获提升!
页: [1] 2
查看完整版本: manim边做边学--显函数图像