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)

相关推荐
Goona_11 分钟前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
xw33734095641 小时前
彩色转灰度的核心逻辑:三种经典方法及原理对比
人工智能·python·深度学习·opencv·计算机视觉
倔强青铜三1 小时前
为什么 self 与 super() 成了 Python 的永恒痛点?
人工智能·python·面试
墨尘游子1 小时前
目标导向的强化学习:问题定义与 HER 算法详解—强化学习(19)
人工智能·python·算法
小白学大数据2 小时前
基于Python的新闻爬虫:实时追踪行业动态
开发语言·爬虫·python
freed_Day2 小时前
python面向对象编程详解
开发语言·python
普郎特3 小时前
张三:从泥水匠到包工头的故事 *—— 深入浅出讲解 `run_in_executor()` 的工作原理*
python
我要学习别拦我~3 小时前
kaggle分析项目:steam付费游戏数据分析
python·游戏·数据分析
大模型真好玩3 小时前
深入浅出LangChain AI Agent智能体开发教程(四)—LangChain记忆存储与多轮对话机器人搭建
前端·人工智能·python
love530love3 小时前
命令行创建 UV 环境及本地化实战演示—— 基于《Python 多版本与开发环境治理架构设计》的最佳实践
开发语言·人工智能·windows·python·conda·uv