Python运算(二)math模块

math是Python自带的数学函数模块,对大多数数字类型适用,但不适用于复数,如果是复数需要使用cmath模块的同名函数,无特殊情况下,math模块中的函数返回值均为浮点数。

数论与表示函数

函数名 释义/代码实例
math.ceil(x) 返回大于或等于x的最小整数,如果x不是浮点数,则会委托x.ceil()返回一个Integer类的值
math.copysign(x,y) 返回一个基于x的绝对值和y的符号的浮点数>>> math.copysign(2.4, -1.2)
-2.4
math.fabs(x) 返回x的绝对值
math.factorial(x) 返回x的阶乘,当x不是整数或者是负数时,引发ValueError异常
math.floor(x) 返回x的向下取整,小于或等于x的最大整数,如果x不是浮点数,则委托x.floor()返回一个Integral值
math.fmod(x,y) x除以y的余数,但结果并不一定与x%y相同,x%y取余是向下取余,而fomd函数是向靠近0的方向取余,并且fmod函数精度更准确,所以fmod()函数更适合浮点数
math.frexp(x) 返回x的尾数和指数对(m,e),m是一个浮点数,e是一个整数,m和e要满足 x== m * 2 **e。 如果x为零,则返回(0.0,0)
math.fsum(iterable) 返回迭代中的精确浮点值,通过跟踪多个中间部分和 以此避免精度损失。该方法的准确性取决于IEEE-754算术保证和 舍入模式为半偶的典型情况,在一些非Windows版本中,底层C库使用扩展精度添加,并且有时可能会使中间和加倍,导致在最低有效位中关闭。
>>> sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
0.9999999999999999
>>> math. fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
1.0
math.gcd(a,b) 返回a和b的最大公约数,如果a或b之一非负,则函数函数的值是同时能正常a和b的最大正整数,gcd(0,0)则返回0
math.isclose(a,b,*,rel_tol=1e-09,abs_tol=0.0) 若a和b的值比较接近则返回True,否则返回False。判定标准是根据给定的绝对和相对容差。rel_tol是相对容差,必须大于0,是a和b之间允许的最大差值。abs_tol是最小绝对容差,至少为0
math.isfinite(x) 如果x是有限位数,则返回True,否则返回False
math.isinf(x) 如果x是正无穷或负无穷,则返回True,否则返回False
math.isnan(x) 如果x是NaN,则返回True,否则返回False
math.ldexp(x,i) 返回x*(2**i), 是函数frexp()的反函数
math.modf(x) 返回x的小数和整数部分,两个结果都带有x的符号并且是浮点数
math.trunc(x) 返回x实部截断Integeral

幂函数与对数函数

函数名 释义/代码示例
math.exp(x) 返回 e**x
math.expm1(x) 返回e**x - 1
math.log(x,base) 使用一个参数,则返回x的自然对数(底为e)。使用两个参数,返回给定的base的对数x,计算为log(x)/log(base)。
math.log1p(x) 返回1+x(base e)的自然对数
math.log2(x) 返回x以2为底的对数,比log(x,2)准确度高
math.log10(x) 返回x底为10的对数,比log(x,10)准确度高
math.pow(x,y) 返回x的y次幂
math.sqrt(x) 返回x的平方根
>>> x = 5
>>> math.exp(x)
148.4131591025766
>>> math.expm1(x)
147.4131591025766
>>> math.log(x)
1.6094379124341003
>>> math.log(x, 2)
2.321928094887362
>>> math.log1p(x)
1.791759469228055
>>> math.log2(x)
2.321928094887362
>>> math.log10(x)
0.6989700043360189
>>> math.pow(x, 2)
25.0
>>> math.sqrt(x)
2.23606797749979

三角函数

函数名 释义/代码示例
math.acos(x) 以弧度为单位返回x的反余弦值
math.asin(x) 以弧度为单位返回x的反正弦值
math.atan(x) 以弧度为单位返回x的反正切值
math.atan2(y,x) 以弧度为单位返回athan(y/x),结果在-pi和pi之间,可以计算角度的正确象限
math.cos(x) 返回x弧度的余弦值
math.hypot(x,y) 返回欧几里德范数,sqrt(xx + y\y),是原点到点(x,y)的向量距离
math.sin(x) 返回x弧度的正弦值
math.tan(x) 返回x弧度的正切值

注意: x的取值若超出范围,否则会报ValueError: math domain error

>>> math.acos(2.3)
Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    math.acos(2.3)
ValueError: math domain error
>>> math.acos(0.5)
1.0471975511965976
>>> math.asin(0.5)
0.5235987755982988
>>> math.atan(0.5)
0.46364760900080615
>>> math.atan2(0.5,0.5)
0.7853981633974483
>>> math.cos(0.5)
0.8775825618903728
>>> math.hypot(0.5,0.5)
0.7071067811865476
>>> math.sin(0.5)
0.479425538604203
>>> math.tan(0.5)
0.5463024898437905
>>> math.tan(1)
1.557407724654902
>>> math.tan(1.4)
5.797883715482887
>>> math.tan(2)
-2.185039863261519
>>> math.tan(2.5)
-0.7470222972386602

角度转换

函数名 释义
math.degrees(x) 将角度x从弧度转换为度数
math.radians(x) 将角度x从度数转换为弧度

双曲函数

双曲函数是基于双曲线而非圆来对三角函数进行模拟

函数名 释义
math.acosh(x) 返回x的反双曲余弦值
math.asinh(x) 返回x的反双曲正弦值
math.atanh(x) 返回x的反双曲正切值
math.cosh(x) 返回x的双曲余弦值
math.sinh(x) 返回x的双曲正弦值
math.tanh(x) 返回x的双曲正切值

特殊函数

函数名 释义
math.erf(x) 用来计算传统的统计函数,如累积标准正态分布
math.erfc(x) 返回x的互补误差函数,互补错误函数 定义为 1.0 - erf(x)
math.gamma(x) 返回x的伽马函数值
math.lgamma(x) 返回Gamma函数x绝对值的自然对数

math模块中的常数

常数 释义
math.pi 数学常数π=3.1415926…
math.e 数学常数e= 2.718281….
math.tau 数学常数τ = 6.283185…
math.inf 正无穷大浮点数,负无穷大浮点数使用-math.inf
math.nan 浮点”非数字”值

math模块是数学函数的包装模块,若使用不符合数学规范,则会触发ValueError

参考文献:

1.https://docs.python.org/English/3.6/library/math.html#math.fmod