On this page
cmath —复数的 math 函数
该模块提供对复数 math 函数的访问。此模块中的函数接受整数,浮点数或复数作为参数。他们还将接受具有complex()或float()方法的任何 Python 对象:这些方法分别用于将对象转换为复数或浮点数,然后将该函数应用于转换结果。
Note
在具有硬件和系统级支持带符号零的平台上,涉及分支切割的Function在分支切割的两侧都是连续的:零的符号将分支切割的一侧与另一侧区分开。在不支持带符号零的平台上,连续性如下所示。
极坐标之间的转换
Python 复数z
使用矩形或笛卡尔坐标存储在内部。它完全由它的实部 z.real
和其虚部 z.imag
决定。换一种说法:
z == z.real + z.imag*1j
极坐标提供了表示复数的另一种方法。在极坐标中,复数* z 由模量 r 和相角 phi 定义。模量 r 是从 z 到原点的距离,而相位 phi 是从正 x 轴到将原点连接到 z *的线段的逆时针角度(以弧度为单位)。
下列Function可用于从原始直角坐标转换为极坐标并返回。
cmath.
phase
(* x *)- 以浮点数返回* x 的相位(也称为 x 的 argument *)。
phase(x)
等效于math.atan2(x.imag, x.real)
。结果在[-π,π]范围内,此操作的分支剪切沿负实轴,从上方连续。在支持带符号零的系统(包括当前使用的大多数系统)上,这意味着即使x.imag
为零,结果的符号也与x.imag
的符号相同:
- 以浮点数返回* x 的相位(也称为 x 的 argument *)。
>>> phase(complex(-1.0, 0.0))
3.141592653589793
>>> phase(complex(-1.0, -0.0))
-3.141592653589793
cmath.
polar
(* x *)- 返回极坐标中* x 的表示形式。返回Pair
(r, phi)
,其中 r 是 x 的模数,phi 是 x *的相位。polar(x)
等效于(abs(x), phase(x))
。
- 返回极坐标中* x 的表示形式。返回Pair
cmath.
rect
(* r , phi *)- 返回带有极坐标* r 和 phi 的复数 x *。等效于
r * (math.cos(phi) + math.sin(phi)*1j)
。
- 返回带有极坐标* r 和 phi 的复数 x *。等效于
幂和对数函数
cmath.
exp
(* x *)- 将* e 提高到幂 x ,其中 e *是自然对数的底数。
cmath.
log
(* x * [,* base *])- 将* x 的对数返回给定的 base 。如果未指定 base ,则返回 x *的自然对数。从上开始,沿着负实轴从 0 到-∞有一个分支切口。
cmath.
log10
(* x *)- 返回* x *的以 10 为底的对数。它具有与log()相同的分支剪切。
cmath.
sqrt
(* x *)- 返回* x *的平方根。它具有与log()相同的分支剪切。
Trigonometric functions
cmath.
acos
(* x *)- 返回* x *的反余弦值。有两个分支切口:一个分支切口从 1 沿实轴一直延伸到∞,从下方连续。另一个从-1 沿实轴向左延伸到-∞,从上方连续。
cmath.
asin
(* x *)- 返回* x *的反正弦值。它具有与acos()相同的分支剪切。
cmath.
atan
(* x *)- 返回* x *的反正切。有两个分支切口:一个分支切口从
1j
沿虚轴延伸到∞j
,从右侧开始连续。另一个从-1j
沿虚轴延伸到-∞j
,从左侧开始连续。
- 返回* x *的反正切。有两个分支切口:一个分支切口从
cmath.
cos
(* x *)- 返回* x *的余弦值。
cmath.
sin
(* x *)- 返回* x *的正弦值。
cmath.
tan
(* x *)- 返回* x *的切线。
Hyperbolic functions
cmath.
acosh
(* x *)- 返回* x *的反双曲余弦值。有一个分支切口,沿实轴从 1 处向左延伸到-∞,从上开始连续。
cmath.
asinh
(* x *)- 返回* x *的反双曲正弦值。有两个分支切口:一个分支切口从
1j
沿虚轴延伸到∞j
,从右侧开始连续。另一个从-1j
沿虚轴延伸到-∞j
,从左侧开始连续。
- 返回* x *的反双曲正弦值。有两个分支切口:一个分支切口从
cmath.
atanh
(* x *)- 返回* x *的反双曲正切值。有两个分支切口:一个从实线的
1
延伸到∞
,从下方连续。另一个从-1
沿实轴延伸到-∞
,从上方连续。
- 返回* x *的反双曲正切值。有两个分支切口:一个从实线的
cmath.
cosh
(* x *)- 返回* x *的双曲余弦值。
cmath.
sinh
(* x *)- 返回* x *的双曲正弦值。
cmath.
tanh
(* x *)- 返回* x *的双曲正切值。
Classification functions
cmath.
isfinite
(* x *)- 如果* x *的实部和虚部都是有限的,则返回
True
,否则返回False
。
- 如果* x *的实部和虚部都是有限的,则返回
3.2 版中的新Function。
cmath.
isinf
(* x *)- 如果* x *的实部或虚部为无穷大,则返回
True
,否则返回False
。
- 如果* x *的实部或虚部为无穷大,则返回
cmath.
isnan
(* x *)- 如果* x *的实部或虚部是 NaN,则返回
True
,否则返回False
。
- 如果* x *的实部或虚部是 NaN,则返回
cmath.
isclose
(* a , b ,**,* rel_tol = 1e-09 , abs_tol = 0.0 *)- 如果值* a 和 b *彼此接近,则返回
True
,否则返回False
。
- 如果值* a 和 b *彼此接近,则返回
根据给定的绝对和相对公差确定两个值是否接近。
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
仅被视为离自己很近。
3.5 版中的新Function。
See also
PEP 485 –测试近似相等的函数
Constants
cmath.
pi
- math 常数π,为浮点数。
cmath.
e
- math 常数* e *,为浮点数。
cmath.
tau
- math 常数τ,为浮点数。
3.6 版的新Function。
cmath.
inf
- 浮点正无穷大。等效于
float('inf')
。
- 浮点正无穷大。等效于
3.6 版的新Function。
cmath.
infj
- 实数为零,虚部为正的复数。等效于
complex(0.0, float('inf'))
。
- 实数为零,虚部为正的复数。等效于
3.6 版的新Function。
cmath.
nan
- 浮点“非数字”(NaN)值。等效于
float('nan')
。
- 浮点“非数字”(NaN)值。等效于
3.6 版的新Function。
cmath.
nanj
- 实数为零,虚部为 NaN 的复数。等效于
complex(0.0, float('nan'))
。
- 实数为零,虚部为 NaN 的复数。等效于
3.6 版的新Function。
请注意,Function选择与模块math中的Function相似但不相同。之所以拥有两个模块,是因为有些用户对复数不感兴趣,甚至不知道它们是什么。他们宁愿math.sqrt(-1)
引发异常,也不愿返回复数。还要注意,即使答案可以表示为实数(在这种情况下,复数的虚部为零),在cmath中定义的函数也始终返回复数。
关于分支切口的 Comments:它们是曲线,给定函数沿该曲线不能连续。它们是许多复杂Function的必要Function。假设如果您需要使用复杂的函数进行计算,那么您将了解分支切割。查阅几乎所有(不太基础的)有关复杂变量的书都可以得到启发。有关为数字目的正确选择分支切口的信息,请参考以下内容:
See also
Kahan,W:复杂基本Function的分支削减;或者,很多事都没有。在 A. Iserles 和 M. Powell(编辑)中,数值分析的最新技术。 Clarendon Press(1987)第 165–211 页。