Python数字运算(三)cmath模块

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模块一起解决复数运算问题。假设有一天需要用特别复杂的方式去计算,就会理解这么定义的原因。