复数 cmath类的详解 – (3)Python语言的数学和数学模块(必读进阶学习教程)(参考资料)
该模块提供对复数数学函数的访问。 该模块中的函数接受整数、浮点数或复数作为参数。 它们还将接受任何具有 __complex__() 或 __float__() 方法的 Python 对象:这些方法分别用于将对象转换为复数或浮点数,然后将函数应用于 转换。
注意
在硬件和系统级支持平台符号的零,涉及分支机构削减功能是连续两个 分支切割面:零的符号与其他分支切口的一侧区别。在不支持带符号零的平台上,连续性如下所述。
极坐标的转换
Python 复数 z 使用矩形或笛卡尔坐标在内部存储。 它完全由它的实部 z.real 和它的虚部 z.imag 决定。 换句话说:
z == z.real + z.imag*1j
极坐标提供了另一种表示复数的方法。 在极坐标中,复数 z 由模 r 和相位角 phi 定义。 模量 r 是从 z 到原点的距离,而相位 phi 是逆时针角度,以弧度为单位,从正 x 轴到连接原点和 z 的线段。
以下函数可用于将原始直角坐标转换为极坐标并返回。
cmath.
phase(x)
- 返回 x 的相位(也称为 x 的参数),作为浮点数。 phase(x) 等价于 math.atan2(x.imag, x.real)。 结果位于 [-π, π] 范围内,此操作的分支切割位于负实轴上,从上方连续。 在支持有符号零的系统上(包括当前使用的大多数系统),这意味着结果的符号与 x.imag 的符号相同,即使 x.imag 为零:
>>> >>> phase(complex(-1.0, 0.0)) 3.141592653589793 >>> phase(complex(-1.0, -0.0)) -3.141592653589793
注意
可以使用内置 abs() 函数计算复数 x 的模数(绝对值)。 此操作没有单独的 cmath 模块功能。
cmath.
polar(x)
- 返回 x 在极坐标中的表示。 返回一对 (r, phi),其中 r 是 x 的模数,phi 是 x 的相位。 polar(x) 等价于 (abs(x), phase(x))。
cmath.
rrect(
phi,
)
- 返回具有极坐标 r 和 phi 的复数 x。 等价于 r * (math.cos(phi) + math.sin(phi)*1j)。
幂函数和对数函数
cmath.
exp(x)
- 返回e的x次方,其中e是自然对数的底。
cmath.
xlog(
base[,
])
- 返回给定底的 x 的对数。 如果未指定底数,则返回 x 的自然对数。 有一个分支切割,从 0 沿负实轴到 -∞,从上方连续。
cmath.
log10(x)
- 返回 x 的以 10 为底的对数。 这与 log() 具有相同的分支切割。
cmath.
sqrt(x)
- 返回 x 的平方根。 这与 log() 具有相同的分支切割。
三角函数
cmath.
acos(x)
- 返回 x 的反余弦值。 有两个分支切割:一个从 1 沿实轴向右延伸到 ∞,从下方连续。 另一个从 -1 沿实轴向左延伸到 -∞,从上方连续。
cmath.
asin(x)
- 返回 x 的反正弦。 这与 acos() 具有相同的分支切割。
cmath.
atan(x)
- 返回 x 的反正切。 有两个分支切口:一个从 1j 沿虚轴延伸到 ∞j,从右侧连续。 另一个从 -1j 沿虚轴延伸到 -∞j,从左侧连续。
cmath.
cos(x)
- 返回 x 的余弦。
cmath.
sin(x)
- 返回 x 的正弦值。
cmath.
tan(x)
- 返回x的正切值。
双曲函数
cmath.
acosh(x)
- 返回x的反双曲余弦值。有一个分支切口,沿着实轴从1向左延伸到-∞,从上方连续。
cmath.
asinh(x)
- 返回x的反双曲正弦值。有两个分支切口:一个从
1j
假想轴延伸到∞j
右边连续。另一个从-1j
假想轴延伸到-∞j
左边连续。
cmath.
atanh(x)
- 返回x的反双曲正切。有两个分支切口:一个从
1
实轴延伸到∞
从下方连续。另一个从-1
实轴延伸到-∞
从上方连续。
cmath.
cosh(xx0
- 返回x的双曲余弦值。
cmath.
sinh(x)
- 返回x的双曲正弦值。
cmath.
tanh(x)
- 返回x的双曲正切值。
分类功能
cmath.
isfinite(x)
- 如果 x 的实部和虚部都是有限的,则返回 True,否则返回 False。
3.2 版中的新功能。
cmath.
isinf(x)
- 如果 x 的实部或虚部是无穷大,则返回 True,否则返回 False。
cmath.
isnan(x)
- 如果 x 的实部或虚部是 NaN,则返回 True,否则返回 False。
cmath.
aisclose(
b,
*,
rel_tol=1e-09,
abs_tol=0.0,
)
- 如果值 a 和 b 彼此接近,则返回 True,否则返回 False。
根据给定的绝对和相对公差确定两个值是否接近。
rel_tol 是相对容差——它是 a 和 b 之间允许的最大差异,相对于 a 或 b 的较大绝对值。 例如,要设置 5% 的容差,请传递 rel_tol=0.05。 默认容差为 1e-09,可确保两个值在大约 9 位十进制数字内相同。 rel_tol 必须大于零。
abs_tol 是最小绝对容差——对于接近零的比较有用。 abs_tol 必须至少为零。
如果没有发生错误,结果将是:abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)。
NaN、inf 和 -inf 的 IEEE 754 特殊值将根据 IEEE 规则进行处理。 具体来说,NaN 不被视为接近任何其他值,包括 NaN。 inf 和 -inf 仅被视为接近它们自己。
常数
cmath.
pi
- 数学常数 π,作为浮点数。
cmath.
e
- 数学常数e,作为浮点数。
cmath.
tau
- 数学常数τ,作为浮点数。
版本3.6中的新功能。
cmath.
inf
- 浮点正无穷大。相当于
float('inf')
。版本3.6中的新功能。
cmath.
infj
- 具有零实部和正无穷虚部的复数。相当于
complex(0.0, float('inf'))
版本3.6中的新功能。
cmath.
nan
- 浮点“非数字”(NaN)值。相当于
float('nan')
。版本3.6中的新功能。
cmath.
nanj
- 具有零实部和NaN虚部的复数。相当于
complex(0.0, float('nan'))
版本3.6中的新功能。
请注意,函数的选择与模块数学中的选择相似,但并不完全相同。 有两个模块的原因是一些用户对复数不感兴趣,甚至可能不知道它们是什么。 他们宁愿让 math.sqrt(-1) 引发异常,也不愿返回一个复数。 还要注意,在 cmath 中定义的函数总是返回一个复数,即使答案可以表示为一个实数(在这种情况下,复数的虚部为零)。
关于分支切割的注释:它们是给定函数无法连续的曲线。 它们是许多复杂功能的必要特征。 假设如果您需要使用复杂的函数进行计算,您将了解分支切割。 查阅几乎所有(不是太初级的)关于复杂变量的书籍以获得启发。 有关为数字目的正确选择分支切割的信息,以下是一个很好的参考: