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)

相关推荐
m0_613856291 小时前
mysql如何利用事务隔离级别解决特定业务冲突_mysql隔离方案选型
jvm·数据库·python
我的xiaodoujiao2 小时前
API 接口自动化测试详细图文教程学习系列16--项目实战演练3
python·学习·测试工具·pytest
ID_180079054732 小时前
Python 实现亚马逊商品详情 API 数据准确性校验(极简可用 + JSON 参考)
java·python·json
时空系2 小时前
第10篇:继承扩展——面向对象编程进阶 python中文编程
开发语言·python·ai编程
CHANG_THE_WORLD4 小时前
python 批量终止进程exe
开发语言·python
liann1194 小时前
3.2_红队攻击框架--MITRE ATT&CK‌
python·网络协议·安全·网络安全·系统安全·信息与通信
云天AI实战派4 小时前
AI 智能体问题排查指南:ChatGPT、API 调用到 Agent 上线失灵的全流程修复手册
大数据·人工智能·python·chatgpt·aigc
我的xiaodoujiao4 小时前
API 接口自动化测试详细图文教程学习系列15--项目实战演练2
python·学习·测试工具·pytest
多思考少编码5 小时前
PAT甲级真题1001 - 1005题详细题解(C++)(个人题解)
c++·python·最短路·pat·算法竞赛
ZhengEnCi5 小时前
M5-markconv自定义CSS样式指南 📝
前端·css·python