9.3. cmath - 复数的数学函数

本模块始终是可用的。它提供对数学函数为复数的访问。本模块中的函数作为参数接受整数、 浮点数或复数。它们还将接受具有__complex__()__float__()方法的任何Python对象:这些方法用于将对象转换为复杂或浮点数字,然后将该函数应用于转换的结果。

在平台上的硬件和系统级支持签名的零,涉及分支函数是连续的两边的分支切割: 零的标志区分的分支切割从另一侧。在做的平台上不支持签署的零的连续性是作为以下指定的内容。

9.3.1.极坐标的转换

使用矩形笛卡尔坐标在内部存储Python复杂数z它完全由其实部 z.real及其虚部 z.imag决定。换句话说:

z == z.real + z.imag*1j

极坐标给另一种方法来表示一个复杂的数字。在极坐标下,复数z是由弹性模量r和相角φ定义的。弹性模量r是从z到原点的距离而阶段皮皮是逆时针旋转的角度,以弧度为单位),从积极的 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表示。Returns a pair (r, phi) where r is the modulus of x and phi is the phase of x. polar(x) is equivalent to (abs(x), phase(x)).

cmath.rect(r, phi)

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

9.3.2.幂函数和对数函数

cmath.exp(x)

返回指数值e**x

cmath.log(x[, base])

返回给定x的对数。如果未指定的基地,返回x的自然对数。那里是一个分支切断,从 0 到-∞,负实轴沿连续从上面。

cmath.log10(x)

返回x的对数。这具有与log()相同的分支切割。

cmath.sqrt(x)

返回x的平方根。这具有与log()相同的分支切割。

9.3.3.三角函数

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的正切值。

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的实部或虚部是无穷大,而False则返回True

cmath.isnan(x)

如果x的实部或虚部是NaN,而False则返回True

cmath.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)

如果ab的值彼此接近,而False则返回True

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

rel_tol是相对容限 - 它是ab之间的最大允许差值,相对于/ t3>或b例如,要将公差设置为5%,请传递rel_tol=0.05默认容差为1e-09,它确保两个值在大约9个十进制数字内相同。rel_tol必须大于零。

abs_tol是最小绝对公差 - 对于接近零的比较有用。abs_tol必须至少为零。

如果没有错误发生,则结果将是:abs(ab) max(rel_tol t4> max(abs(a), abs(b)), abs_tol)

将根据IEEE规则处理特殊值NaNinf-inf具体地,不认为NaN接近任何其他值,包括NaNinf-inf只被认为接近自己。

版本3.5中的新功能。

请参见

PEP 485 - 测试近似相等的函数

9.3.6.常量

cmath.pi

数学常量π,作为一个浮点数。

cmath.e

数学常数e,作为一个浮点数。

请注意,函数的选择与模块math中的函数类似,但不完全相同。有两个模块的原因是一些用户不感兴趣复数,并且也许甚至不知道它们是什么。他们宁愿使用math.sqrt(-1)引发异常而不是返回一个复数。还要注意,cmath中定义的函数总是返回一个复数,即使答案可以表示为一个实数(在这种情况下,复数的虚部为零)。

分支的一个注记: 他们是沿其给定的函数不能连续的曲线。他们是的很多复杂的功能的必要特征。假设如果你需要计算复杂的功能,您将了解分支割痕。启蒙咨询几乎任何 (不太浅) 书上复杂的变量。数值用于分支削减的适当选择的信息,很好的参考应该如下:

请参见

Kahan,W:分支切割复杂的基本函数;或者,没有什么是符号位。在Iserles,A.,and Powell,M。(eds。),数值分析中的最新技术。克拉伦登出版社 (1987) pp165-211。