9.3. cmath
—复数的数学函数¶
此模块始终可用。它提供对复数的数学函数的访问。此模块中的函数接受整数,浮点数或复数作为参数。它们还将接受具有 __complex__()
或 __float__()
方法的任何Python对象:这些方法分别用于将对象转换为复数或浮点数,然后将函数应用于转换结果。
注解
在具有对带符号零的硬件和系统级支持的平台上,涉及分支切割的功能在分支切割的 both 侧是连续的:零的符号将分支切割的一侧与另一侧区分开。在不支持带符号零的平台上,连续性如下所述。
9.3.1. 极坐标转换¶
Python复数 z
使用 rectangular 或 Cartesian 坐标存储在内部。它完全由其 实部 z.real
和其 虚部 z.imag
决定。换一种说法:
z == z.real + z.imag*1j
极坐标 给出了表示复数的替代方式。在极坐标中,复数 z 由模量 r 和相位角 phi 定义。模量 r 是从 z 到原点的距离,而相位 phi 是从正x轴到将原点连接到 z 的线段的逆时针角度(以弧度测量)。
以下函数可用于将原始直角坐标转换为极坐标并返回。
-
cmath.
phase
(x)¶ 返回 x 的阶段(也称为 x 的 argument),作为浮点。
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
-
cmath.
polar
(x)¶ 以极坐标返回 x 的表示。返回一对
(r, phi)
,其中 r 是 x 的模数,phi是 x 的相位。polar(x)
等同于(abs(x), phase(x))
。
-
cmath.
rect
(r, phi)¶ 返回具有极坐标 r 和 phi 的复数 x。相当于
r * (math.cos(phi) + math.sin(phi)*1j)
。
9.3.2. 功率和对数函数¶
-
cmath.
exp
(x)¶ 返回指数值
e**x
。
-
cmath.
log
(x[, base])¶ 返回 x 对给定 base 的对数。如果未指定 base,则返回 x 的自然对数。有一个分支切口,从0沿负实轴到-∞,从上方连续。
9.3.3. 三角函数¶
-
cmath.
acos
(x)¶ 返回 x 的反余弦。有两个分支切口:一个从实轴沿着从1轴向右延伸到∞,从下方连续。另一个沿着实轴从-1向左延伸到-∞,从上方连续。
-
cmath.
atan
(x)¶ 返回 x 的反正切。有两个分支切口:一个从
1j
沿虚轴延伸到∞j
,从右边连续。另一个从-1j
沿虚轴延伸到-∞j
,从左边连续。
-
cmath.
cos
(x)¶ 返回 x 的余弦。
-
cmath.
sin
(x)¶ 返回 x 的正弦值。
-
cmath.
tan
(x)¶ 返回 x 的正切。
9.3.4. 双曲线函数¶
-
cmath.
acosh
(x)¶ 返回 x 的反双曲余弦值。有一个分支切口,沿着实轴从1向左延伸到-∞,从上方连续。
-
cmath.
asinh
(x)¶ 返回 x 的反双曲正弦值。有两个分支切口:一个从
1j
沿虚轴延伸到∞j
,从右边连续。另一个从-1j
沿虚轴延伸到-∞j
,从左边连续。
-
cmath.
atanh
(x)¶ 返回 x 的反双曲正切。有两个分支切口:一个从
1
沿着实轴延伸到∞
,从下面连续。另一个从-1
沿着实轴延伸到-∞
,从上方连续。
-
cmath.
cosh
(x)¶ 返回 x 的双曲余弦值。
-
cmath.
sinh
(x)¶ 返回 x 的双曲正弦值。
-
cmath.
tanh
(x)¶ 返回 x 的双曲正切值。
9.3.5. 分类函数¶
-
cmath.
isfinite
(x)¶ 如果 x 的实部和虚部都是有限的,则返回
True
,否则返回False
。3.2 新版功能.
-
cmath.
isinf
(x)¶ 如果 x 的实部或虚部是无穷大,则返回
True
,否则返回False
。
-
cmath.
isnan
(x)¶ 如果 x 的实部或虚部是NaN,则返回
True
,否则返回False
。
-
cmath.
isclose
(a, 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)
。IEEE 754特殊值
NaN
,inf
和-inf
将根据IEEE规则处理。具体来说,NaN
不被认为接近任何其他值,包括NaN
。inf
和-inf
只被认为接近自己。3.5 新版功能.
参见
PEP 485 - 测试近似相等的函数
9.3.6. 常量¶
-
cmath.
pi
¶ 数学常数 π,作为float。
-
cmath.
e
¶ 数学常数 e,作为float。
-
cmath.
tau
¶ 数学常数 τ,作为float。
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
中的功能选择相似,但不完全相同。有两个模块的原因是一些用户对复数不感兴趣,甚至可能不知道它们是什么。他们宁愿让 math.sqrt(-1)
提出异常而不是返回一个复数。还要注意,cmath
中定义的函数总是返回一个复数,即使答案可以表示为一个实数(在这种情况下,复数的虚部为零)。
关于分支切割的注释:它们是给定函数不能连续的曲线。它们是许多复杂功能的必要特征。假设如果您需要使用复杂函数进行计算,那么您将了解分支切割。几乎任何关于复杂变量的书(不太基础)都可以参考。有关为数字目的正确选择分支切割的信息,一个很好的参考应该是:
参见
Kahan,W:分支切割复杂的基本函数;或者,没有什么是符号位。在Iserles,A.,和Powell,M。(eds。),The state of the art in numerical analysis。 Clarendon Press(1987)pp165–211。