9.2. math
— 数学函数¶
本模块始终是可用的。它提供对由 C 标准定义的数学函数访问。
这些函数不能用于复数;如果您需要支持复数,从 cmath
使用相同的函数。对复数支持与否的区别取决于此模块的大多数使用者不想学习像理解复数这么深层的数学理论。接收到异常而不是复杂的结果允许意外复杂的数字作为参数使用的早期检测,以便程序员可以确定如何以及为什么它生成放在第一位。
本模块提供以下功能。除明确说明,否则,所有返回值都是浮点型。
9.2.1.数理论和表示函数¶
math.
ceil
(x)¶Return the ceiling of x, 大于等于 x 的最小整数.如果 x 不是浮点型,委托
x.__ceil__()
方法,将会返回Integral
(整型)值。
math.
copysign
( x,y ) ¶返回x的绝对值大小和y的符号。On platforms that support signed zeros,
copysign(1.0, -0.0)
returns -1.0.
math.
fabs
(x)¶返回x的绝对值。
math.
factorial
(x)¶返回x的阶乘。如果x不是整数或者是负数,返回错误
ValueError
。
math.
floor
(x)¶Return the floor of x, 小于等于 x的最大整数.如果 x 不是浮点型,委托
x.__floor__()
方法,将会返回Integral
(整型)值。
math.
fmod
(x, y)¶返回由平台C库定义的
fmod(x, y)
。请注意,Python表达式x % y
可能不会返回相同的结果。The intent of the C standard is thatfmod(x, y)
be exactly (mathematically; to infinite precision) equal tox - n*y
for some integer n such that the result has the same sign as x and magnitude less thanabs(y)
. Python的x % y
返回具有y符号的结果,可能不能精确计算float参数。例如,fmod(-1e-100, 1e100)
是-1e-100
,但是结果Python的-1e-100 % 1e100
是1e100-1e-100
不能精确地表示为float,并且舍入到令人惊讶的1e100
。因此,使用浮动时,通常优先使用函数fmod()
,而Python的x % t6>
在使用整数时是首选。
math.
frexp
(x)¶将x的尾数和指数作为对
(m, e)
返回。m是浮点,并且e是使得x == / t5> * 2 ** e
。If x is zero, returns(0.0, 0)
, otherwise0.5 <= abs(m) < 1
.这用来"条分缕析"一个浮点数的内部表示形式可移植的方式。
math.
fsum
(iterable)¶在可迭代中返回值的准确浮动点总和。通过跟踪多个中间部分款项,避免了精度损失:
>>> 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.
gcd
(a, b)¶ 返回整数a和b的最大公约数。如果a或b为非零,则
gcd(a, b) / t2>是分割a和b的最大正整数。
gcd(0, 0)
返回0
。版本3.5中的新功能。
math.
isclose
(a, b, *, rel_tol=1e-09, abs_tol=0.0)¶如果a和b的值彼此接近,而
False
则返回True
根据给定的绝对和相对容限确定两个值是否接近。
rel_tol是相对容限 - 它是a和b之间的最大允许差值,相对于/ t3>或b。例如,要将公差设置为5%,请传递
rel_tol=0.05
。默认容差为1e-09
,它确保两个值在大约9个十进制数字内相同。rel_tol必须大于零。abs_tol是最小绝对公差 - 对于接近零的比较有用。abs_tol必须至少为零。
如果没有错误发生,则结果将是:
abs(ab) max(rel_tol t4> max(abs(a), abs(b)), abs_tol)
。将根据IEEE规则处理特殊值
NaN
,inf
和-inf
。具体地,不认为NaN
接近任何其他值,包括NaN
。inf
和-inf
只被认为接近自己。版本3.5中的新功能。
请参见
PEP 485 - 测试近似相等的函数
math.
isfinite
(x)¶如果x既不是无穷大也不是NaN,则返回
True
,否则返回False
。(注意0.0
是被认为是有限的。)版本3.2中的新功能。
math.
isinf
(x)¶如果x是正或负无穷大,则返回
True
,否则返回False
。
math.
isnan
(x)¶如果x是NaN(不是数字),则返回
True
,否则返回False
。
math.
modf
(x)¶返回x的小数和整数部分。这两个结果携带的x标志,也是浮点型。
注意,frexp()
和modf()
有与它们的C语言不同的调用/返回模式:它们接受一个参数并返回一对值,它们的第二个返回值通过一个'输出参数'(在Python中没有这样的事情)。
对于ceil()
,floor()
和modf()
函数,请注意all足够大的数值是精确的整数。Python浮点通常不会超过53位的精度(与平台C double类型相同),在这种情况下,任何float x与abs(x) &gt; = 2 ** 52
必然没有小数位。
9.2.2.幂函数和对数函数¶
数学。
exp
( x ) ¶返回
e**x
(e的x幂方)。
math.
expm1
(x)¶返回
e ** x - 1
。对于小浮点x,在exp(x) - 1 导致显着的精度损失;
expm1()
函数提供了一种将该数量计算为全精度的方法:>>> 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
(x[, base])¶具有一个参数,返回的x (以e) 的自然对数。
有两个参数,将x的对数返回给定的基本,计算为
log(x)/log(base)
。
math.
log1p
(x)¶返回1 + x (底数e) 的自然对数。其结果被计算在某种程度上是准确,可用于x接近于零。
-
math.
log2
(x)¶ 返回x的基2对数。这通常比
log(x, 2)
更准确。版本3.3中的新功能。
请参见
int.bit_length()
返回表示二进制整数所需的位数,不包括符号和前导零。
math.
log10
(x)¶返回x的对数。这通常比
log(x, 10)
更准确。
math.
pow
(x, y)¶返回
x
的y
次幂。特殊情况下遵循附件 C99 标准的 ' F' 可能的范围内。具体地,pow(1.0, x)
和pow(x,
始终返回1.0
,即使x
为零或NaN。If bothx
andy
are finite,x
is negative, andy
is not an integer thenpow(x, y)
is undefined, and raisesValueError
.与内建
**
操作符不同,math.pow()
将其参数转换为float
。使用**
或内建pow()
函数计算精确的整数幂。
math.
sqrt
(x)¶返回 x 的平方根。
9.2.3.三角函数¶
-
math.
acos
(x)¶ 返回以弧度表示的角的x,余弦。
math.
asin
(x)¶返回以弧度表示的正弦值的x。
math.
atan
(x)¶返回反正切值的x,以弧度为单位。
math.
atan2
(y, x)¶以弧度返回
atan(y / x)
。结果在-pi
和pi
之间。从原点到点(x, y)
的平面中的矢量与正X轴形成该角度。atan2()
的点是两个输入的符号都是已知的,因此它可以计算角度的正确象限。例如,atan(1)
和atan2(1, 1)
都是pi/4
,但atan2(-1, -1)
为-3*pi/4
。
math.
cos
(x)¶返回x弧度的余弦值。
math.
hypot
(x, y)¶返回欧氏方程,
sqrt(x * x + y * y)
。这是从原点到点(x, y)
的向量长度。
math.
sin
(x)¶返回x弧度的正弦值。
math.
tan
(x)¶返回x弧度的正切值。
9.2.5.双曲函数¶
双曲线函数是基于双曲线而不是圆的三角函数的类似。
math.
acosh
(x)¶返回x的反双曲余弦值。
math.
asinh
(x)¶返回x的反双曲正弦值。
math.
atanh
(x)¶返回x的反双曲正切值。
math.
cosh
(x)¶返回x的双曲余弦值。
math.
sinh
(x)¶返回x的双曲正弦值。
math.
tanh
(x)¶返回x的双曲正切值。
9.2.6.特殊的函数¶
-
math.
erf
(x)¶ 在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.0 - erf(x)
。它用于x的大值,其中从一个减去将导致重要性损失。版本3.2中的新功能。
-
math.
gamma
(x)¶ 返回 x 的 Gamma function (伽马函数)。
3.2版本新增。
math.
lgamma
(x)¶返回伽玛函数在x的绝对值的自然对数。
版本3.2中的新功能。
9.2.7.常量¶
math.
pi
¶数学常量 π = 3.141592......,到现有的精度。
math.
e
¶数学常数 e = 2.718281......,到现有的精度。
math.
inf
¶浮点正无穷大。(对于负无穷大,请使用
-math.inf
。)相当于float('inf')
的输出。版本3.5中的新功能。
math.
nan
¶浮点数“不是数字”(NaN)值。等效于
float('nan')
的输出。版本3.5中的新功能。
CPython实现详细信息: math
模块主要由围绕平台C math库函数的thin包装器组成。在特殊情况下的行为遵循附件 F 的 C99 标准在适当情况下。当前实现将针对sqrt(-1.0)
或log(0.0)
的无效操作引发ValueError
(其中C99附件F建议发送无效操作(例如,exp(1000.0)
),或者对于溢出的结果OverflowError
除非一个或多个输入参数是NaN,否则NaN不会从上述任何函数返回;在这种情况下,大多数函数将返回NaN,但是(再次遵循C99附件F),该规则有一些例外,例如pow(float('nan'), 0.0)
或hypot(float('nan'), float('inf'))
。
请注意 Python 还可以不遗余力的区分从安静的 Nan,信号 Nan 信号 Nan 的行为仍未指定。典型行为是对待所有 Nan,好像他们是安静。
请参见
- 模块
cmath
- 上述函数的复数版本。