cmath ——复数的数学函数


此模块提供对复数数学函数的访问。此模块中的函数接受整数、浮点数或复数作为参数。他们还将接受具有 __complex__() 或A __float__() 方法:这些方法分别用于将对象转换为复数或浮点数,然后将函数应用于转换结果。

注解

在硬件和系统级支持有符号零的平台上,涉及分支切割的功能是连续的 both 分支切口的侧面:零的符号区分分支切口的一侧和另一侧。在不支持有符号零的平台上,连续性如下所述。

极坐标与极坐标的转换

python复数 z 内部存储使用 rectangularCartesian 协调。它完全取决于 实部 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

注解

复数的模(绝对值) x 可以使用内置的 abs() 功能。没有分开的 cmath 此操作的模块功能。

cmath.polar(x)

返回的表示形式 x 在极坐标系中。返回一对 (r, phi) 在哪里? r 是的模量 x 而phi是 x . polar(x) 等于 (abs(x), phase(x)) .

cmath.rect(r, phi)

返回复数 x 有极坐标 rphi . 相当于 r * (math.cos(phi) + math.sin(phi)*1j) .

幂函数和对数函数

cmath.exp(x)

返回 e 引发到*x*次方在哪里 e 是自然对数的底。

cmath.log(x[, base])

返回的对数 x 到给定的 base . 如果 base 未指定,返回的自然对数 x . 有一个分支切割,从0沿负实轴到-∞,从上面连续。

cmath.log10(x)

返回以10为底的对数 x . 这和切树枝一样 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(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 如果值 ab 彼此靠近 False 否则。

根据给定的绝对和相对公差确定两个值是否接近。

rel_tol 是相对公差——是 ab ,相对于 ab . 例如,要设置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特殊值 NaNinf-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页。