manim边做边学--复数平面

news/2024/10/23 10:15:32/文章来源:https://www.cnblogs.com/wang_yb/p/18494562

所谓复数平面,就是一种二维坐标系统,用于几何表示复数的场景,其中横轴代表实部,纵轴代表虚部。

每个点对应一个唯一的复数,反之亦然,这种表示方法使得复数的加法、乘法等运算可以通过直观的图形变换来理解。

ComplexPlaneManim库中用于处理复数平面的类。

它不仅提供了标准的笛卡尔坐标系,还特别针对复数操作进行了优化,使得复数及其变换的可视化变得更加直观。

通过 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的主要方法n2pp2n

# 创建复数平面
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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/819540.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3185. 构成整天的下标对数目 II

给你一个整数数组 hours,表示以 小时 为单位的时间,返回一个整数,表示满足 i < j 且 hours[i] + hours[j] 构成 整天 的下标对 i, j 的数目。 整天 定义为时间持续时间是 24 小时的 整数倍 。 例如,1 天是 24 小时,2 天是 48 小时,3 天是 72 小时,以此类推。 示例 1:…

使用dbeaver导出数据csv格式要求

1.分隔符改成使用\t, 默认的会导致数字不对2.下面也要修改下,不然会出现列和值对不上情况

通过集成平台实现聚水潭销售出库单与金蝶云星辰V2的无缝对接

PACKAGE-聚水潭销售出库单对接销售出库单-1 在企业信息化系统的集成过程中,数据的高效、准确传输至关重要。本文将分享一个具体的技术案例:如何通过轻易云数据集成平台,将聚水潭奇门的数据无缝对接到金蝶云星辰V2,实现销售出库单的自动化处理。 本次集成方案命名为“PACKAG…

Windows下给Visual Studio添加OpenSSL

一、安装OpenSSL 1.下载OpenSSL Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions可以下载已经编译好的包含 lib 和 include 文件的安装包 有Win32和Win64可选,这里的位数指的是你使用OpenSSL开发出来的软件的位数版本,而不是你计算机的位数。 注意,…

分享一个开源的文件MD5、Hash值等校验的小工具

官方主页 https://github.com/dragonyee/MyHash 软件截图介绍 一款采用并行计算,充分利用多核CPU性能,快速计算文件哈希值的工具。 功能特点: 1、只支持常用的CRC32、MD5、SHA1、SHA256、SHA512算法; 2、支持多核CPU并行计算,大幅提高计算速度; 3、支持多个文件或文件夹拖…

Python 学习记录

前言 简单情况:主要记录学习Python的简单情况,包括代码与结果,以及关键注释 工具与来源: 一下代码与结果都可在JupyterLab上实现,更多情况可看Github使用 NumPy 可视化数学函数 1.可视化 f=x1*e(-x12-x22) import numpy as np import matplotlib.pyplot as pltx1_array=…

OpenPSG:离AGI再进一步,首个开放环境关系预测框架 | ECCV24

全景场景图生成(PSG)的目标是对对象进行分割并识别它们之间的关系,从而实现对图像的结构化理解。以往的方法主要集中于预测预定义的对象和关系类别,因此限制了它们在开放世界场景中的应用。随着大型多模态模型(LMMs)的快速发展,开放集对象检测和分割已经取得了重大进展,…

在外包干了 3 年,被强制清场了。。。

大家好,我是R哥。 今天再分享一个励志的面试辅导案例:一个深圳的兄弟,双非二本,工作 5 年+,在外包干了 3 年,结果今年被甲方强制清场了,没有赔偿,边走劳动仲裁,边学习,最终拿下还不错的自研 offer,脱离外包,太励志了。。在外包干了 3 年,被甲方清场,还没有赔偿,…

CogView3---CogView-3Plus-微调代码源码解析-四-

CogView3 & CogView-3Plus 微调代码源码解析(四) .\cogview3-finetune\sat\sgm\modules\diffusionmodules\sampling_utils.py # 导入数学库以进行数学运算 import math # 导入 PyTorch 库以进行张量操作 import torch # 从 SciPy 库导入积分函数 from scipy import integ…

CogView3---CogView-3Plus-微调代码源码解析-三-

CogView3 & CogView-3Plus 微调代码源码解析(三) .\cogview3-finetune\sat\sgm\modules\diffusionmodules\guiders.py # 导入 logging 模块,用于记录日志信息 import logging # 从 abc 模块导入 ABC 类和 abstractmethod 装饰器,用于定义抽象基类和抽象方法 from abc i…