algolib.core 包
子模块
algolib.core.complex 模块
轻量级复数实现(不使用 Python 内置的 complex
类型)。
本模块提供精简且文档完善的 Complex
类,适用于算法学习和实现。支持代数形式 (a + bi) 与极坐标形式 (r·e^{iθ}),并包含常用运算。
备注
本类使用普通浮点数且为不可变对象。
为避免依赖内置特性,本类特意不使用 Python 内置的
complex
类型。
示例
>>> z1 = Complex(3, 4)
>>> z1.modulus()
5.0
>>> z2 = Complex.from_polar(2, math.pi/2)
>>> (z1 + z2).re
3.0
>>> (z1.conjugate()).im
-4.0
- class algolib.core.complex.Complex(re: float, im: float)[源代码]
基类:
object
代数形式的复数 \(a + b \mathrm{i}\)。
- 参数:
re (float) -- 实部 \(a\)。
im (float) -- 虚部 \(b\)。
- 抛出:
InvalidTypeError -- 当任意部分非实数(int/float)时触发。
- almost_equal(other: Complex, tol: float = 1e-12) bool [源代码]
当各分量绝对误差不超过
tol
时返回 True。这比直接使用浮点数的精确相等比较更安全。
- argument() float [源代码]
计算复数的主幅角。
- 返回:
幅角(弧度制),范围为 \((-\pi, \pi]\)。
- 返回类型:
float
示例
>>> z = Complex(0, 1) >>> z.argument() 1.5707963267948966
- conjugate() Complex [源代码]
计算复数的共轭。
- 返回:
共轭复数 \(a - b \mathrm{i}\)。
- 返回类型:
示例
>>> z = Complex(3, 4) >>> z.conjugate() Complex(re=3.0, im=-4.0)
- static from_cartesian(re: float, im: float) Complex [源代码]
以笛卡尔坐标构造复数。
- 参数:
re (float) -- 复数的实部。
im (float) -- 复数的虚部。
- 返回:
由笛卡尔坐标生成的复数。
- 返回类型:
示例
>>> z = Complex.from_cartesian(3, 4) >>> z Complex(re=3.0, im=4.0)
- static from_iterable(pair: Iterable[float]) Complex [源代码]
由一个包含两个数的可迭代对象构造复数。
- 参数:
pair (Iterable[float]) -- 一个恰好包含两个元素的可迭代对象:实部与虚部。
- 返回:
由可迭代对象构造的复数。
- 返回类型:
- 抛出:
InvalidTypeError -- 当可迭代对象不包含恰好两个数值元素时触发。
示例
>>> z = Complex.from_iterable([3, 4]) >>> z Complex(re=3.0, im=4.0)
- static from_polar(r: float, theta: float) Complex [源代码]
以极坐标形式构造复数。
- 参数:
r (float) -- 复数的模(半径)。必须为非负数。
theta (float) -- 复数的幅角(弧度制)。
- 返回:
由极坐标生成的复数。
- 返回类型:
- 抛出:
InvalidTypeError -- 当 r 或 theta 不是实数时触发。
InvalidValueError -- 当 r 为负数时触发。
示例
>>> z = Complex.from_polar(2, math.pi / 2) >>> z Complex(re=1.2246467991473532e-16, im=2.0)
- im: float
- modulus() float [源代码]
计算复数的模(绝对值)。
- 返回:
模长 \(\sqrt{a^2 + b^2}\)。
- 返回类型:
float
示例
>>> z = Complex(3, 4) >>> z.modulus() 5.0
- normalized() Complex [源代码]
将复数按 \(z/|z|\) 归一化,使其模为 1。
- 返回:
归一化后的复数。
- 返回类型:
- 抛出:
InvalidValueError -- 当复数为零时触发。
示例
>>> z = Complex(3, 4) >>> z.normalized() Complex(re=0.6, im=0.8)
- re: float
模块内容
- class algolib.core.Complex(re: float, im: float)[源代码]
基类:
object
代数形式的复数 \(a + b \mathrm{i}\)。
- 参数:
re (float) -- 实部 \(a\)。
im (float) -- 虚部 \(b\)。
- 抛出:
InvalidTypeError -- 当任意部分非实数(int/float)时触发。
- almost_equal(other: Complex, tol: float = 1e-12) bool [源代码]
当各分量绝对误差不超过
tol
时返回 True。这比直接使用浮点数的精确相等比较更安全。
- argument() float [源代码]
计算复数的主幅角。
- 返回:
幅角(弧度制),范围为 \((-\pi, \pi]\)。
- 返回类型:
float
示例
>>> z = Complex(0, 1) >>> z.argument() 1.5707963267948966
- conjugate() Complex [源代码]
计算复数的共轭。
- 返回:
共轭复数 \(a - b \mathrm{i}\)。
- 返回类型:
示例
>>> z = Complex(3, 4) >>> z.conjugate() Complex(re=3.0, im=-4.0)
- static from_cartesian(re: float, im: float) Complex [源代码]
以笛卡尔坐标构造复数。
- 参数:
re (float) -- 复数的实部。
im (float) -- 复数的虚部。
- 返回:
由笛卡尔坐标生成的复数。
- 返回类型:
示例
>>> z = Complex.from_cartesian(3, 4) >>> z Complex(re=3.0, im=4.0)
- static from_iterable(pair: Iterable[float]) Complex [源代码]
由一个包含两个数的可迭代对象构造复数。
- 参数:
pair (Iterable[float]) -- 一个恰好包含两个元素的可迭代对象:实部与虚部。
- 返回:
由可迭代对象构造的复数。
- 返回类型:
- 抛出:
InvalidTypeError -- 当可迭代对象不包含恰好两个数值元素时触发。
示例
>>> z = Complex.from_iterable([3, 4]) >>> z Complex(re=3.0, im=4.0)
- static from_polar(r: float, theta: float) Complex [源代码]
以极坐标形式构造复数。
- 参数:
r (float) -- 复数的模(半径)。必须为非负数。
theta (float) -- 复数的幅角(弧度制)。
- 返回:
由极坐标生成的复数。
- 返回类型:
- 抛出:
InvalidTypeError -- 当 r 或 theta 不是实数时触发。
InvalidValueError -- 当 r 为负数时触发。
示例
>>> z = Complex.from_polar(2, math.pi / 2) >>> z Complex(re=1.2246467991473532e-16, im=2.0)
- im: float
- modulus() float [源代码]
计算复数的模(绝对值)。
- 返回:
模长 \(\sqrt{a^2 + b^2}\)。
- 返回类型:
float
示例
>>> z = Complex(3, 4) >>> z.modulus() 5.0
- normalized() Complex [源代码]
将复数按 \(z/|z|\) 归一化,使其模为 1。
- 返回:
归一化后的复数。
- 返回类型:
- 抛出:
InvalidValueError -- 当复数为零时触发。
示例
>>> z = Complex(3, 4) >>> z.normalized() Complex(re=0.6, im=0.8)
- re: float