cmath模块为复数提供了有关数学运算函数,使得复数也能想整型或浮点型数字一样计算
复数极坐标系转换函数
在Python数据类型(一)数字类型中讲到复数的存储本质,和在极坐标系的定义,有关极坐标转换函数如下:
函数名 | 释义 |
---|---|
cmath.phase(x) | 以浮点数的形式返回x的弧度,范围在[-π,π] |
cmath.polar(x) | 返回x在极坐标系中的坐标(r,phi) |
cmath.rect(r, phi) | 返回坐标(r, phi)在极坐标系中对应的复数 |
>>> import cmath
>>> cmath.phase(complex(-1.0, 0.0))
3.141592653589793
>>> cmath.phase(complex(-1.0,0.0))
3.141592653589793
>>> cmath.phase(complex(-0.5, 0.0))
3.141592653589793
>>> cmath.phase(complex(-0.5, 0.3))
2.601173153319209
>>> cmath.polar(complex(-0.5, 0.3))
(0.58309518948453, 2.601173153319209)
>>> cmath.rect(0.58309518948453, 2.601173153319209)
(-0.49999999999999994+0.3j)
幂函数与对数函数
函数 | 释义 |
---|---|
cmath.exp(x) | 返回e**x |
cmath.log(x,base) | 返回以base为底x的对数 |
cmath.log10(x) | 返回以10为底x的对数 |
cmath.sqrt(x) | x的开方 |
>>> cmath.exp(complex(2.0, 0.0))
(7.38905609893065+0j)
>>> cmath.exp(complex(10.0, 2.0))
(-9166.244060822655+20028.608669281643j)
>>> cmath.log10(complex(100.0,2.0))
(2.0000868415292326+0.008684731797315706j)
>>> cmath.sqrt(complex(2.0, 1.0))
(1.455346690225355+0.34356074972251244j)
三角函数
函数 | 释义 |
---|---|
cmath.acos(x) | 返回x的反余弦值 |
cmath.asin(x) | 返回x的反正弦值 |
cmath.atan(x) | 返回x的反正切值 |
cmath.cos(x) | 返回x的余弦值 |
cmath.sin(x) | 返回x的正弦值 |
cmath.tan(x) | 返回x的正切值 |
双曲函数
函数 | 释义 |
---|---|
cmath.acosh(x) | 返回双曲线中x的反余弦值 |
cmath.asinh(x) | 返回双曲线中x的反正弦值 |
cmath.atanh(x) | 返回双曲线中x的反正切值 |
cmath.cosh(x) | 返回双曲线中x的余弦值 |
cmath.sinh(x) | 返回双曲线中x的正弦值 |
cmath.tanh(x) | 返回双曲线中x的正切值 |
分类函数
函数 | 释义 |
---|---|
cmath.isfinite(x) | 模数r和弧度phi都是有理数,则返回True,否则返回False |
cmath.isinf(x) | 模数r和弧度phi都趋近于正无穷,则返回True,否则返回False |
cmath.isnan(x) | 模数r和弧度phi都是Nan,则返回True,否则返回False |
cmath.isclose(a,b,*,rel_tol,abs_tol) | 若a和b的值比较接近则返回True,否则返回False。判定标准是根据给定的绝对和相对容差。rel_tol是相对容差,必须大于0,是a和b之间允许的最大差值。abs_tol是最小绝对容差,至少为0 |
常数
常数名 | 释义 |
---|---|
cmath.pi | 常数π=3.141926…. |
cmath.e | 常数e= 2.718281…. |
cmath.tau | 常数τ = 6.283185…,为π的两倍 |
cmath.inf | 正无穷大浮点数 |
cmath.infj | 实部为0,虚部为正无穷大浮点数的复数 |
cmath.nan | 浮点数”非数值” |
cmath.nanj | 实部为0,虚部为Nan的”非数值” |
cmath模块与math模块许多功能看上去相似,但实际上是不同的功能。cmath返回的值是复数,哪怕虚部为0。许多人不理解为什么单独定义一个cmath模块而不是math模块一起解决复数运算问题。假设有一天需要用特别复杂的方式去计算,就会理解这么定义的原因。