首页 > Python资料 博客日记
manim边做边学--复数平面
2024-10-23 10:30:04Python资料围观37次
所谓复数平面,就是一种二维坐标系统,用于几何表示复数的场景,其中横轴代表实部,纵轴代表虚部。
每个点对应一个唯一的复数,反之亦然,这种表示方法使得复数的加法、乘法等运算可以通过直观的图形变换来理解。
ComplexPlane
是Manim
库中用于处理复数平面的类。
它不仅提供了标准的笛卡尔坐标系,还特别针对复数操作进行了优化,使得复数及其变换的可视化变得更加直观。
通过 ComplexPlane
,我们可以轻松地绘制出复数点、向量以及执行复数变换,如旋转、缩放等。
本篇将介绍Manim
中的ComplexPlane
对象以及一些常用的使用示例。
1. 主要参数
ComplexPlane
继承自上一篇介绍的NumberPlane
,
ComplexPlane
没有自己特有的参数,和NumberPlane
的参数是一样的。
参数名称 | 类型 | 说明 |
---|---|---|
x_range | Sequence[float] | 直角平面的横坐标轴范围,间隔 |
y_range | Sequence[float] | 直角平面的纵坐标轴范围,间隔 |
x_length | float | 直角平面宽度 |
y_length | float | 直角平面高度 |
background_line_style | dict | 直角平面背景网格线的样式 |
faded_line_style | dict | 淡化网格线的样式,用于辅助背景网格线 |
faded_line_ratio | int | 定义淡化网格线与背景网格线的比例 |
make_smooth_after_applying_functions | bool | 应用函数后是否进行平滑处理 |
2. 主要方法
和NumberPlane
一样,ComplexPlane
也包含了坐标系统CoordinateSystem
类提供的方法,
不过,在复数平面中,我比较常用的是以下3个方法:
名称 | 说明 |
---|---|
add_coordinates | 给复数平面的坐标轴添加刻度数值 |
n2p(number_to_point) | 根据复数得到此复数在复数平面上的位置 |
p2n(point_to_number) | 根据复数平面上的位置得到对应的复数 |
3. 使用示例
下面通过示例来演示复数平面ComplexPlane
的多种功能,包括复数平面的网格与坐标轴,复数点的标记与展示、复数平面上的函数图像、复数变换动画等。
让ComplexPlane
成为我们展示复数概念和性质的有力工具。
3.1. 网格与坐标轴
创建一个复数平面ComplexPlane
,绘制网格线和坐标轴,设置实部的范围[-5, 5]
,虚部的范围[-4, 4]
,最后再给坐标轴加上刻度值。
plane = ComplexPlane(
x_range=[-5, 5],
y_range=[-4, 4],
x_length=6,
y_length=4,
)
# 加上刻度值
plane.add_coordinates()
3.2. 复数点的标记
在复数平面坐标上添加2个复数点,再给这两个点添加标签,显示其复数的值。
# 创建复数平面
plane = ComplexPlane(
x_range=[-5, 5],
y_range=[-5, 5],
)
plane.add_coordinates()
# 添加复数的点
d1 = Dot(plane.n2p(3 + 2j))
d2 = Dot(plane.n2p(-4 - 2j))
3.3. 复数运算
复数平面上添加两个点,然后计算这两个复数相加的结果,并将计算过程在复数平面上用动画显示出来。
# 创建复数平面
plane = ComplexPlane(
x_range=[-1, 8],
y_range=[-1, 8],
)
plane.add_coordinates()
# 初始的两个点
d1 = Dot(plane.n2p(2 + 1j))
d2 = Dot(plane.n2p(2 + 4j))
# 相加后的点
d3 = Dot(plane.n2p(4 + 5j))
3.4. 复数变换
最后,是复数点经过一个函数变换后,在复数平面上显示新的位置。
示例中先初始4个点,然后经过函数$ f(x)=2^x $的变换后,显示其变换后的位置。
其中用到了ComplexPlane
的主要方法n2p
和p2n
。
# 创建复数平面
plane = ComplexPlane(
x_range=[-5, 5],
y_range=[-5, 5],
)
plane.add_coordinates()
d1 = LabeledDot(
label=MathTex("1"),
point=plane.n2p(2 + 1j),
)
d2 = LabeledDot(
label=MathTex("2"),
point=plane.n2p(2 + 3j),
)
d3 = LabeledDot(
label=MathTex("3"),
point=plane.n2p(-2 - 2j),
)
d4 = LabeledDot(
label=MathTex("4"),
point=plane.n2p(-3 + 2j),
)
self.add(d1, d2, d3, d4)
# 变换后点的位置
pd1 = np.exp2(plane.p2n(d1.get_center()))
pd2 = np.exp2(plane.p2n(d2.get_center()))
pd3 = np.exp2(plane.p2n(d3.get_center()))
pd4 = np.exp2(plane.p2n(d4.get_center()))
4. 附件
文中的代码只是关键部分的截取,完整的代码共享在网盘中(complex_plane.py
),
下载地址: 完整代码 (访问密码: 6872)
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj