《燃烧王座:烈焰纪元全球争霸赛暨五周年庆典盛典》 2025-05-31 02:09:36
中企承建!2022年世界杯主场馆亮相,摘得多项“冠军” 2025-12-11 09:36:55
圣剑神域专属沉默散人天堂2025春季狂欢盛典 2025-04-12 19:53:19
我的宫廷:盛世华章·锦绣风华——2025春季宫廷权谋争霸盛典 2025-03-30 20:35:06
正在阅读:魅族MX6长测(1):充满电的时间比官方说的慢呀魅族MX6长测(1):充满电的时间比官方说的慢呀 2025-10-31 00:38:35
魔兽传奇2025春季庆典:史诗级冒险与丰厚奖励等你来挑战! 2025-04-23 16:52:17
【民俗】晚上遇到黄鼠狼过马路寓意 晚上看见黄鼠狼从眼前跑过 2025-11-03 11:29:16
2025年姜饼人酷跑春季狂欢节:甜蜜冲刺,赢取豪华奖励! 2025-04-07 21:29:55
马里奥奥德赛公主最后去哪了 2025-10-27 22:01:36
属于有赞的时代结束了? 2025-10-17 12:04:58

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

在Manim库中,FunctionGraph类是一个核心组件,专门用于在坐标系中绘制函数图像。

FunctionGraph的主要作用是将数学函数以直观的图形形式展示出来,使得复杂的数学概念更加容易理解。它广泛应用于数学教学、科学演示以及数据可视化等领域。

其典型应用场景包括:

数学教学:直观展示函数的基本形状和性质(奇偶性、周期性、渐近线等)

物理模拟:可视化运动学中的位移-时间图像、速度-时间图像

工程应用:绘制信号处理中的波形图、控制系统中的响应曲线

算法演示:展示优化算法中的目标函数、机器学习中的损失函数

本文将详细介绍FunctionGraph的功能、参数和应用场景,并通过实际示例展示其强大功能。

1. 主要参数

FunctionGraph的主要参数有:

参数

类型

说明

function

Callable[[float], float]

必需参数,要绘制的函数(如lambda x: x**2)

x_range

Sequence[float]

定义域,如[-3, 3]或[-3, 3, 0.1](起点、终点、步长)

color

Color

曲线颜色,默认为WHITE

discontinuities

Sequence[float]

函数的不连续点列表

use_smoothing

bool

是否使用平滑处理(默认True)

dt

float

参数化步长(影响平滑度)

t_range

Optional[Sequence[float]]

参数范围(高级用法)

其中,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)