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.log10(x)
返回以10为底的对数 x . 这和切树枝一样
log()
.
- cmath.sqrt(x)
返回的平方根 x . 这和切树枝一样
log()
.
三角函数
- cmath.asin(x)
返回的弧正弦值 x . 它的树枝切口和
acos()
.
双曲函数
分类功能
- 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 --一个检验近似相等性的函数
常量
请注意,功能的选择与模块中的功能相似,但不完全相同。 math
. 之所以有两个模块,是因为有些用户对复数不感兴趣,甚至可能不知道它们是什么。他们宁愿 math.sqrt(-1)
引发异常而不是返回复数。还要注意,中定义的函数 cmath
始终返回复数,即使答案可以表示为实数(在这种情况下,复数的虚数部分为零)。
关于分支切割的一个注意事项:它们是给定函数不能连续的曲线。它们是许多复杂函数的必要特征。假设您需要使用复杂函数进行计算,您将了解分支切割。为了启蒙,参考几乎任何关于复杂变量的书(不太基本)。为了获得正确选择用于数值目的的分支切削的信息,应参考以下内容:
参见
Kahan,W:对复杂的初等函数进行分支切割;或者,对没什么符号位做了很多麻烦。在伊塞勒斯,A.和鲍威尔,M.(eds.),数值分析的最新进展。克拉伦登出版社(1987)第165-211页。