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}\)

返回类型:

Complex

示例

>>> 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) -- 复数的虚部。

返回:

由笛卡尔坐标生成的复数。

返回类型:

Complex

示例

>>> z = Complex.from_cartesian(3, 4)
>>> z
Complex(re=3.0, im=4.0)
static from_iterable(pair: Iterable[float]) Complex[源代码]

由一个包含两个数的可迭代对象构造复数。

参数:

pair (Iterable[float]) -- 一个恰好包含两个元素的可迭代对象:实部与虚部。

返回:

由可迭代对象构造的复数。

返回类型:

Complex

抛出:

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) -- 复数的幅角(弧度制)。

返回:

由极坐标生成的复数。

返回类型:

Complex

抛出:

示例

>>> 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。

返回:

归一化后的复数。

返回类型:

Complex

抛出:

InvalidValueError -- 当复数为零时触发。

示例

>>> z = Complex(3, 4)
>>> z.normalized()
Complex(re=0.6, im=0.8)
re: float
to_polar() Tuple[float, float][源代码]

将复数转换为极坐标形式。

返回:

一个二元组 (r, theta),其中 r 为模,theta 为幅角。

返回类型:

tuple of float

示例

>>> z = Complex(3, 4)
>>> z.to_polar()
(5.0, 0.9272952180016122)
to_tuple() Tuple[float, float][源代码]

将复数转换为由实部与虚部组成的元组。

返回:

一个二元组 (re, im),表示复数的实部与虚部。

返回类型:

tuple of float

示例

>>> z = Complex(3, 4)
>>> z.to_tuple()
(3.0, 4.0)

模块内容

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}\)

返回类型:

Complex

示例

>>> 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) -- 复数的虚部。

返回:

由笛卡尔坐标生成的复数。

返回类型:

Complex

示例

>>> z = Complex.from_cartesian(3, 4)
>>> z
Complex(re=3.0, im=4.0)
static from_iterable(pair: Iterable[float]) Complex[源代码]

由一个包含两个数的可迭代对象构造复数。

参数:

pair (Iterable[float]) -- 一个恰好包含两个元素的可迭代对象:实部与虚部。

返回:

由可迭代对象构造的复数。

返回类型:

Complex

抛出:

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) -- 复数的幅角(弧度制)。

返回:

由极坐标生成的复数。

返回类型:

Complex

抛出:

示例

>>> 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。

返回:

归一化后的复数。

返回类型:

Complex

抛出:

InvalidValueError -- 当复数为零时触发。

示例

>>> z = Complex(3, 4)
>>> z.normalized()
Complex(re=0.6, im=0.8)
re: float
to_polar() Tuple[float, float][源代码]

将复数转换为极坐标形式。

返回:

一个二元组 (r, theta),其中 r 为模,theta 为幅角。

返回类型:

tuple of float

示例

>>> z = Complex(3, 4)
>>> z.to_polar()
(5.0, 0.9272952180016122)
to_tuple() Tuple[float, float][源代码]

将复数转换为由实部与虚部组成的元组。

返回:

一个二元组 (re, im),表示复数的实部与虚部。

返回类型:

tuple of float

示例

>>> z = Complex(3, 4)
>>> z.to_tuple()
(3.0, 4.0)