python:math 您所在的位置:网站首页 python的math模块阶乘 python:math

python:math

2024-01-04 18:55| 来源: 网络整理| 查看: 265

python:math --- 数学函数 数论与表示函数幂函数与对数函数三角函数角度转换双曲函数特殊函数常量 该模块提供了对C标准定义的数学函数的访问。

这些函数不适用于复数;如果你需要计算复数,请使用 cmath 模块中的同名函数。将支持计算复数的函数区分开的目的,来自于大多数开发者并不愿意像数学家一样需要学习复数的概念。得到一个异常而不是一个复数结果使得开发者能够更早地监测到传递给这些函数的参数中包含复数,进而调查其产生的原因。

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

数论与表示函数

math.ceil(x) 返回 x 的向上取整,即大于或等于 x 的最小的整数。如果 x 不是浮点数,委托给 x.ceil ,它应该返回一个 Integral 的值。

math.comb(n, k) 返回不重复且无顺序地从 n 项中选择 k 项的方式总数。

当 k n 时取值为零。

Also called the binomial coefficient because it is equivalent to the coefficient of k-th term in polynomial expansion of (1 + x)ⁿ.

如果任一参数不为整数则会引发 TypeError。 如果任一参数为负数则会引发 ValueError。

3.8 新版功能.

math.copysign(x, y) 返回一个基于 x 的绝对值和 y 的符号的浮点数。在支持带符号零的平台上,copysign(1.0, -0.0) 返回 -1.0.

math.fabs(x) 返回 x 的绝对值。

math.factorial(n) Return n factorial as an integer. Raises ValueError if n is not integral or is negative.

3.9 版后已移除: 接受具有整数值的浮点数 (例如 5.0) 的行为已被弃用。

math.floor(x) 返回 x 的向下取整,小于或等于 x 的最大整数。如果 x 不是浮点数,则委托给 x.floor ,它应返回一个 Integral 值。

math.fmod(x, y) 返回 fmod(x, y) ,由平台C库定义。请注意,Python表达式 x % y 可能不会返回相同的结果。C标准的目的是 fmod(x, y) 完全(数学上;到无限精度)等于 x - n*y 对于某个整数 n ,使得结果具有 与 x 相同的符号和小于 abs(y) 的幅度。Python的 x % y 返回带有 y 符号的结果,并且可能不能完全计算浮点参数。 例如, fmod(-1e-100, 1e100) 是 -1e-100 ,但Python的 -1e-100 % 1e100 的结果是 1e100-1e-100 ,它不能完全表示为浮点数,并且取整为令人惊讶的 1e100 。 出于这个原因,函数 fmod() 在使用浮点数时通常是首选,而Python的 x % y 在使用整数时是首选。

math.frexp(x) 以 (m, e) 对的形式返回 x 的尾数和指数。 m 是一个浮点数, e 是一个整数,正好是 x == m * 2**e 。 如果 x 为零,则返回 (0.0, 0) ,否则返回 0.5 >> 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 cookbook recipes for accurate floating point summation。

math.gcd(*integers) 返回给定的整数参数的最大公约数。 如果有一个参数非零,则返回值将是能同时整除所有参数的最大正整数。 如果所有参数为零,则返回值为 0。 不带参数的 gcd() 返回 0。

3.5 新版功能.

在 3.9 版更改: 添加了对任意数量的参数的支持。 之前的版本只支持两个参数。

math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0) 若 a 和 b 的值比较接近则返回 True,否则返回 False。

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

rel_tol 是相对容差 —— 它是 a 和 b 之间允许的最大差值,相对于 a 或 b 的较大绝对值。例如,要设置5%的容差,请传递 rel_tol=0.05 。默认容差为 1e-09,确保两个值在大约9位十进制数字内相同。 rel_tol 必须大于零。

abs_tol 是最小绝对容差 —— 对于接近零的比较很有用。 abs_tol 必须至少为零。

如果没有错误发生,结果将是: abs(a-b) >> 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 )。

使用两个参数,返回给定的 base 的对数 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 底为10的对数。这通常比 log(x, 10) 更准确。

math.pow(x, y) 返回x的幂y。例外情况尽可能遵循IEEE 754标准。特别是,pow(1.0,x)和pow(x,0.0)始终返回1.0,即使x为零或NaN。如果x和y都是有限的,x是负的,并且y不是整数,则pow(x,y)是未定义的,并引发ValueError。

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

在 3.11 版更改:为了与IEEE 754保持一致,将特殊情况pow(0.0,-inf)和pow(-0.0,-inf)更改为返回inf,而不是引发ValueError。 math.sqrt(x) 返回 x 的平方根。

三角函数

math.acos(x) 返回以弧度为单位的 x 的反余弦值。 结果范围在 0 到 pi 之间。

math.asin(x) 返回以弧度为单位的 x 的反正弦值。 结果范围在 -pi/2 到 pi/2 之间。

math.atan(x) 返回以弧度为单位的 x 的反正切值。 结果范围在 -pi/2 到 pi/2 之间。.

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.dist(p, q) 返回 p 与 q 两点之间的欧几里得距离,以一个坐标序列(或可迭代对象)的形式给出。 两个点必须具有相同的维度。

大致相当于:

sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q))) 3.8 新版功能.

math.hypot(*coordinates) 返回欧几里得范数,sqrt(sum(x**2 for x in coordinates))。 这是从原点到坐标给定点的向量长度。

对于一个二维点 (x, y),这等价于使用毕达哥拉斯定义 sqrt(xx + yy) 计算一个直角三角形的斜边。

在 3.8 版更改: 添加了对 n 维点的支持。 之前的版本只支持二维点。

在 3.10 版更改: 改进了算法的精确性,使得最大误差在 1 ulp (最后一位的单位数值) 以下。 更为常见的情况是,结果几乎总是能正确地舍入到 1/2 ulp 范围之内。

math.sin(x) 返回 x 弧度的正弦值。

math.tan(x) 返回 x 弧度的正切值。

角度转换

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) 返回 x 处的 error function 。 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 处的 伽马函数 值。

3.2 新版功能.

math.lgamma(x) 返回Gamma函数在 x 绝对值的自然对数。

3.2 新版功能.

常量

math.pi 数学常数 π = 3.141592…,精确到可用精度。

math.e 数学常数 e = 2.718281…,精确到可用精度。

math.tau 数学常数 τ = 6.283185…,精确到可用精度。Tau 是一个圆周常数,等于 2π,圆的周长与半径之比。更多关于 Tau 的信息可参考 Vi Hart 的视频 Pi is (still) Wrong。吃两倍多的派来庆祝 Tau 日 吧!

3.6 新版功能.

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

3.5 新版功能.

math.nan 一个浮点的 “非数字”(NaN)值。相当于 float(‘nan’) 的输出。 由于 IEEE-754标准 的要求, math.nan 和 float(‘nan’) 不被认为等于任何其他数值,包括其本身。要检查一个数字是否为NaN,请使用 isnan() 函数来测试 NaN ,而不是 is 或 == 。 例子:

>>> import math math.nan == math.nan False float('nan') == float('nan') False math.isnan(math.nan) True math.isnan(float('nan')) True

在 3.11 版更改: It is now always available.

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视为静默的。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有