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

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

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

典型应用场景包括:

  1. 数学教学:直观展示函数的基本形状和性质(奇偶性、周期性、渐近线等)
  2. 物理模拟:可视化运动学中的位移-时间图像、速度-时间图像
  3. 工程应用:绘制信号处理中的波形图、控制系统中的响应曲线
  4. 算法演示:展示优化算法中的目标函数、机器学习中的损失函数

本文将详细介绍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. 正弦和余弦函数图像

这个示例展示了如何绘制正弦和余弦函数的图像。通过指定不同的颜色,可以清晰地区分两个函数。

python 复制代码
# 绘制正弦函数图像
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_toscale方法对函数图像进行平移缩放操作。

通过这种方式,可以直观地展示函数图像的变换。

python 复制代码
# 绘制原始函数图像
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. 复合函数图像

这个示例展示了如何绘制复合函数的图像。

通过将多个函数组合在一起,可以生成复杂的图像,用于展示函数的叠加效果。

python 复制代码
# 绘制复合函数图像
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. 动态展示函数图像的变化

这个示例展示了如何动态展示函数图像的变化。

通过在每一帧中更新函数的定义,可以实现函数图像的动态变化效果,非常适合用于展示函数随时间的变化。

python 复制代码
# 定义一个动态变化的函数
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)

相关推荐
抽风的雨61014 分钟前
【python深度学习】Day 42 Grad-CAM与Hook函数
开发语言·python·深度学习
Mikhail_G33 分钟前
Python应用for循环临时变量作用域
大数据·运维·开发语言·python·数据分析
人衣aoa1 小时前
Python编程基础(二)| 列表简介
开发语言·python
豆沙沙包?2 小时前
2025年- H61-Lc169--74.搜索二维矩阵(二分查找)--Java版
python·线性代数·矩阵
AntBlack2 小时前
计算机视觉 : 端午无事 ,图像处理入门案例一文速通
后端·python·计算机视觉
Freshman小白2 小时前
基于python脚本进行Maxwell自动化仿真
python·自动化
编程有点难3 小时前
Python训练打卡Day39
人工智能·python·深度学习
(・Д・)ノ4 小时前
python打卡day42
开发语言·python
椰椰椰耶4 小时前
[网页五子棋][匹配模块]处理开始匹配/停止匹配请求(匹配算法,匹配器的实现)
java·python·websocket·spring·java-ee
冰轮a4 小时前
Python打卡 DAY 42
python