cmath
——复数的数学函数¶
此模块提供对复数数学函数的访问。此模块中的函数接受整数、浮点数或复数作为参数。他们还将接受具有 __complex__()
或A __float__()
方法:这些方法分别用于将对象转换为复数或浮点数,然后将函数应用于转换结果。
注解
在硬件和系统级支持有符号零的平台上,涉及分支切割的功能是连续的 both 分支切口的侧面:零的符号区分分支切口的一侧和另一侧。在不支持有符号零的平台上,连续性如下所述。
极坐标与极坐标的转换¶
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 )作为漂浮物。
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)¶
返回复数 x 有极坐标 r 和 phi . 相当于
r * (math.cos(phi) + math.sin(phi)*1j)
.
幂函数和对数函数¶
- cmath.exp(x)¶
返回 e 引发到*x*次方在哪里 e 是自然对数的底。
- cmath.log(x[, base])¶
返回的对数 x 到给定的 base . 如果 base 未指定,返回的自然对数 x . 有一个分支切割,从0沿负实轴到-∞,从上面连续。
三角函数¶
- 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 .
双曲函数¶
- 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 .
分类功能¶
- cmath.isfinite(x)¶
返回
True
如果的实部和虚部 x 是有限的,并且False
否则。3.2 新版功能.
- cmath.isinf(x)¶
返回
True
如果 x 是无穷大,并且False
否则。
- cmath.isnan(x)¶
返回
True
如果 x 是一个南,False
否则。
- cmath.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)¶
返回
True
如果值 a 和 b 彼此靠近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 --一个检验近似相等性的函数
常量¶
- 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¶
实部为零,虚部为南的复数。相当于
complex(0.0, float('nan'))
.3.6 新版功能.
请注意,功能的选择与模块中的功能相似,但不完全相同。 math
. 之所以有两个模块,是因为有些用户对复数不感兴趣,甚至可能不知道它们是什么。他们宁愿 math.sqrt(-1)
引发异常而不是返回复数。还要注意,中定义的函数 cmath
始终返回复数,即使答案可以表示为实数(在这种情况下,复数的虚数部分为零)。
关于分支切割的一个注意事项:它们是给定函数不能连续的曲线。它们是许多复杂函数的必要特征。假设您需要使用复杂函数进行计算,您将了解分支切割。为了启蒙,参考几乎任何关于复杂变量的书(不太基本)。为了获得正确选择用于数值目的的分支切削的信息,应参考以下内容:
参见
Kahan,W:对复杂的初等函数进行分支切割;或者,对没什么符号位做了很多麻烦。在伊塞勒斯,A.和鲍威尔,M.(eds.),数值分析的最新进展。克拉伦登出版社(1987)第165-211页。