您的位置:  首页 » Python » math-数学函数详解(2)Python语言的数学和数学模块(必读进阶学习教程)(参考资料)

该模块始终可用。它提供对C标准定义的数学函数的访问。

这些功能不能用于复数; cmath如果需要支持复数,请使用模块中相同名称的函数。支持复数的函数和不支持复数的函数之间的区别是因为大多数用户不想学习理解复数所需的数学。接收异常而不是复杂的结果允许更早地检测用作参数的意外复数,以便程序员可以首先确定它的生成方式和原因。

该模块提供以下功能。除非另有明确说明,否则所有返回值均为浮点数。

数论和表示函数

math.ceil
返回x的上限,即大于或等于x的最小整数。如果x不是float,则委托给x.__ceil__(),它应该返回一个Integral值。
math.copysignx
返回一个浮点数,其大小(绝对值)为x,但符号为 y。在支持带符号零的平台上, 返回-1.0copysign(1.0,-0.0)
math.fabs
返回x的绝对值。
math.factorial
返回x阶乘。ValueError如果x不是整数或是负数,则引发。
math.floor
返回x的最小值,小于或等于x的最大整数。如果x不是float,则委托给x.__floor__(),它应该返回一个Integral值。
math.fmodx
返回,由平台C库定义。请注意,Python表达式可能不会返回相同的结果。C标准的目的是精确地(数学上;到无限精度)等于某个整数n,使得结果具有与x相同的符号和小于的数量。Python 返回带有y符号的结果,并且可能无法完全计算浮点参数。例如,是的,但是Python的结果是,它不能完全表示为浮点数,并且是令人惊讶的。出于这个原因,功能fmod(x, y)x % yfmod(x, y)x - n*yabs(y)x % yfmod(-1e-100, 1e100)-1e-100-1e-100 % 1e1001e100-1e-1001e100fmod()使用浮点数时通常首选,而使用整数时则首选Python 。x % y
math.frexp
返回尾数和x的指数作为对。 m是一个浮点数,e是一个完整的整数。如果X为零,退货,否则。这用于以便携方式“分离”浮动的内部表示。(m, e)x == m * 2**e(0.0, 0)0.5 <= abs(m) < 1
math.fsum可迭代的
返回迭代中的精确浮点值。通过跟踪多个中间部分和来避免精度损失:

>>>
>>> sum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
0.9999999999999999
>>> fsum([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1])
1.0

 

该算法的准确性取决于IEEE-754算术保证和舍入模式为半偶的典型情况。在某些非Windows版本中,底层C库使用扩展精度添加,并且有时可能会使中间和加倍,导致它在最低有效位中关闭。

有关进一步讨论和两种替代方法,请参阅ASPN烹饪手册中的准确浮点求和方法

math.gcda
返回整数ab的最大公约数。如果 ab非零,那么值是最大的正整数,它将ab分开。 回报 。gcd(a,b)gcd(0, 0)0

版本3.5中的新功能。

math.iscloseab*rel_tol = 1e-09abs_tol = 0.0 
True如果值ab彼此接近则返回, False否则返回。

根据给定的绝对和相对容差确定两个值是否被认为是接近的。

rel_tol是相对容差 – 它是ab之间允许的最大差值,相对于ab的较大绝对值。例如,要设置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特殊值NaNinf以及-inf将根据IEEE规则处理。具体而言,NaN不被认为接近任何其他值,包括NaN。 inf并且-inf只被认为接近自己。

版本3.5中的新功能。

也可以看看

PEP 485 – 用于测试近似相等的函数

math.isfinite
返回True如果X既不是无穷大也不是NaN和 False其他。(注意,这0.0 认为是有限的。)

版本3.2中的新功能。

math.isinf
True如果x是正无穷大,则返回, False否则返回。
math.isnan
返回True如果X为NaN(非数字),以及False其他。
math.ldexpx
返回。这基本上是功能的反转 。x * (2**i)frexp()
math.modf
返回x的小数和整数部分。两个结果都带有x的符号并且是浮点数。
math.remainderx
返回相对于y的IEEE 754样式的x余数。对于有限x和有限非零y,这是差异,其中是与商的精确值最接近的整数。如果恰好位于两个连续整数之间,则使用最接近的偶数整数。其余从而始终满足。x - n*ynx / yx /ynr = remainder(x, y)abs(r) <= 0.5 * abs(y)

特殊情况遵循IEEE 754:尤其是 X为任何有限X,并和 提高任何非NaN的X。如果余数运算的结果为零,则该零将与x具有相同的符号。remainder(x, math.inf)remainder(x, 0)remainder(math.inf, x)ValueError

在使用IEEE 754二进制浮点的平台上,此操作的结果始终可以完全表示:不会引入舍入错误。

版本3.7中的新功能。

math.trunc
Realx截断返回到 Integral(通常为整数)。代表来 x.__trunc__()

注意frexp()并且modf()它们具有与它们的C等价物不同的调用/返回模式:它们采用单个参数并返回一对值,而不是通过“输出参数”返回它们的第二个返回值(Python中没有这样的东西)。

对于ceil()floor()modf()功能,请注意,所有的 足够大的幅度的浮点数字是准确的整数。蟒漂浮通常携带没有精度超过53位(相同于平台C双键型),在这种情况下任何浮点数X与 一定没有小数位。abs(x) >= 2**52

功率对数函数

math.exp
e提升到幂x,其中e = 2.718281 …是自然对数的基数。这通常比 或更准确。math.e ** xpow(math.e, x)
math.expm1
e提升到幂x,减去1.这里e是自然对数的基数。对于小浮点数x,减法 可导致精度的显着损失 ; 该 函数提供了一种将此数量计算为完全精度的方法:exp(x) - 1expm1()

>>>
>>> from math import exp, expm1
>>> exp(1e-5) - 1  # gives result accurate to 11 places
1.0000050000069649e-05
>>> expm1(1e-5)    # result accurate to full precision
1.0000050000166668e-05

 

版本3.2中的新功能。

math.log[base 
使用一个参数,返回x的自然对数(到基数e)。

使用两个参数,将x的对数返回给定的基数,计算方式为log(x)/log(base)

math.log1p
返回1 + x(基数e)的自然对数。结果以对于接近零的x精确的方式计算。
math.log2
返回x的base-2对数。这通常比准确更准确 。log(x, 2)

版本3.3中的新功能。

也可以看看

int.bit_length() 返回表示二进制整数所需的位数,不包括符号和前导零。

math.log10
返回x的基数为10的对数。这通常比准确更准确。log(x, 10)
math.powx
回归x提升到了权力y。特殊情况尽可能遵循C99标准的附录’F’。特别是,即使是零或NaN , 也总是返回。如果两个和是有限的, 是负的,而不是整数然后 是未定义的,并提高。pow(1.0, x)pow(x,0.0)1.0xxyxypow(x, y)ValueError

与内置**运算符不同,math.pow()将其参数转换为type float。使用**或内置 pow()函数来计算精确的整数幂。

math.sqrt
返回x的平方根。

三角函数

math.acos
以弧度为单位返回x的反余弦值。
math.asin
以弧度为单位返回x的反正弦值。
math.atan
以弧度为单位返回x的反正切值。
math.atan2y
以弧度返回。结果是在和之间。从原点到点的平面中的矢量使该角度为正X轴。关键是两个输入的符号都是已知的,因此它可以计算角度的正确象限。例如,并且都是,但就是。atan(y / x)-pipi(x,y)atan2()atan(1)atan2(1, 1)pi/4atan2(-1, -1)-3*pi/4
math.cos
返回x弧度的余弦值。
math.hypotx
返回欧几里德范数,。这是从原点到点的矢量长度。sqrt(x*x + y*y)(x, y)
math.sin
返回x弧度的正弦值。
math.tan
返回x弧度的正切值。

角度转换

math.degrees
将角度x从弧度转换为度数。
math.radians
将角度x从度数转换为弧度。

双曲函数

双曲函数 是三角函数的类似物,它们基于双曲线而不是圆。

math.acosh
返回x的反双曲余弦值。
math.asinh
返回x的反双曲正弦值。
math.atanh
返回x的反双曲正切。
math.cosh
返回x的双曲余弦值。
math.sinh
返回x的双曲正弦值。
math.tanh
返回x的双曲正切值。

特殊功能

math.erf
返回x处 的错误函数

erf()函数可用于计算传统的统计函数,如累积标准正态分布

def phi(x):
    'Cumulative distribution function for the standard normal distribution'
    return (1.0 + erf(x / sqrt(2.0))) / 2.0

版本3.2中的新功能。

math.erfc
返回x处的互补误差函数。的互补误差函数被定义为 。它用于x的大值,其中从1减去会导致重要性的损失。1.0 - erf(x)

版本3.2中的新功能。

math.gamma
x处 返回Gamma函数

版本3.2中的新功能。

math.lgamma
在返回Gamma函数的绝对值的自然对数X

版本3.2中的新功能。

常数

math.pi
数学常数π = 3.141592 …,可用精度。
math.e
数学常数e = 2.718281 …,达到可用的精度。
math.tau
数学常数τ = 6.283185 ……,可达到精度。头是一个圆常数等于2 π,一个圆的周长与其半径的比率。要了解有关Tau的更多信息,请查看Vi Hart的视频Pi(仍然)错误,并开始通过吃两倍的馅饼庆祝 Tau日

版本3.6中的新功能。

math.inf
浮点正无穷大。(对于负无穷大,请使用 -math.inf。)相当于。的输出float('inf')

版本3.5中的新功能。

math.nan
浮点“非数字”(NaN)值。相当于。的输出 float('nan')

版本3.5中的新功能。

CPython实现细节:math模块主要由围绕平台C数学库函数的薄包装器组成。特殊情况下的行为在适当情况下遵循C99标准的附录F. 当前实现将引发 ValueError无效操作,如sqrt(-1.0)log(0.0) (其中C99附件F建议发出无效操作或被零除的信号),以及OverflowError溢出的结果(例如 exp(1000.0))。除非一个或多个输入参数是NaN,否则不会从上述任何函数返回NaN; 在这种情况下,大多数函数将返回NaN,但(再次遵循C99附件F)此规则有一些例外,例如或 。pow(float('nan'), 0.0)hypot(float('nan'), float('inf'))

请注意,Python不会将信号NaN与安静的NaN区分开来,并且信号NaN的行为仍未明确。典型的行为是将所有NaN视为安静。

也可以看看

模 cmath
许多这些功能的复数版本。