欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【数字和数学模块】math—数学函数

程序员文章站 2022-04-21 18:53:46
下面讲解Python标准库中的math模块。官方文档:https://docs.python.org/zh-cn/3.8/library/math.html注:该模块定义的函数不适用于复数;如果需要计算复数,请使用cmath模块中的同名函数。cmath模块官方文档:https://docs.python.org/zh-cn/3.8/library/cmath.html#constantsmath——数学函数模块1.数论与表示函数2.幂函数与对数3.三角函数4.角度转换5.双曲函数6.特殊函数7.常量...

本篇讲解Python标准库中的math模块。
官方文档:https://docs.python.org/zh-cn/3.8/library/math.html

注:该模块定义的函数不适用于复数;如果需要计算复数,请使用cmath模块中的同名函数。cmath模块官方文档:https://docs.python.org/zh-cn/3.8/library/cmath.html#constants

1.数论与表示函数

函数 说明
math.ceil(x) 返回 x 的上限,即大于或者等于 x 的最小整数。
math.comb(n,k) 返回不重复且无顺序地从 n 项中选择 k 项的方式总数
math.fabs(x) 返回 x 的绝对值。
math.factorial(x) 以一个整数返回 x 的阶乘。 如果 x 不是整数或为负数时则将引发 ValueError。
math.floor(x) 返回 x 的向下取整,小于或等于 x 的最大整数。
math.fmod(x,y) 求余
math.fsum(iterable) 返回迭代中的精确浮点值。通过跟踪多个中间部分和来避免精度损失。
math.gcd(a,b) 返回整数 ab 的最大公约数。
math.isclose(a, b,rel_tol=1e-09) ab 的值比较接近则返回 True,否则返回 False(注:IEEE 754特殊值 NaNinf-inf 将根据IEEE规则处理。具体来说, NaN 不被认为接近任何其他值,包括 NaN , inf-inf 只被认为接近自己。)
math.isinf(x) 如果 x 是正或负无穷大,则返回 True ,否则返回 False
math.isfinite(x) 如果 x 既不是无穷大也不是NaN,则返回 True ,否则返回 False
math.isnan(x) 如果 x 是 NaN(不是数字),则返回 True ,否则返回 False
math.isqrt(x) 返回非负整数 n 的整数平方根(这就是对 n 的实际平方根向下取整,或者相当于使得 a² ≤ n 的最大整数 a)。
math.modf(x) 返回 x 的小数和整数部分。两个结果都带有 x 的符号并且是浮点数。
math.perm(n,k=None) 返回不重复且有顺序地从 n 项中选择 k 项的方式总数。
math.prod(iterable, *, start=1) 计算输入的 iterable 中所有元素的积。 积的默认 start 值为 1。
math.trunc(x) 返回 Real 值 x 截断为 Integral(通常是整数)。
import math

print(math.ceil(5.0))           # 5
print(math.ceil(5.4))           # 6
print(math.floor(4.0))          # 4
print(math.floor(4.9))          # 4
print(math.trunc(3.14))         # 3
print(math.modf(3.14))          # (0.14000000000000012, 3.0)

print(math.comb(10,4))          # 210
print(math.perm(10,4))          # 5040

print(math.fabs(-2.5))          # 2.5

print(math.factorial(5))        # 120

print(math.fmod(10,3))          # 1.0

print(math.fsum([2,1,5,6,7]))   # 21.0
print(math.prod([2,1,5,6,7]))   # 420

print(math.gcd(24,36))          # 12

print(math.isqrt(24))           # 4
print(math.isqrt(16))           # 4

print(math.isclose(2.00001,2))  # False
print(math.isclose(2.00001,2,rel_tol=1e-05))  # True
print(math.isinf(9000000000000000/0.0000000000001))  # False 
print(math.isinf(math.inf))     # True
print(math.isfinite(235212))    # True
print(math.isnan(math.nan))     # True


2.幂函数与对数

函数 说明
math.exp(x) 返回 ex 幂,其中 e = 2.718281… 是自然对数的基数。
math.expm1(x) 返回 ex 次幂减1。这里 e 是自然对数的基数。
math.log(x,[base]) 使用一个参数,返回 x 的自然对数(底为 e )。使用两个参数,返回给定的 base 的对数 x ,计算为 log(x)/log(base)
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 的平方根。
import math

print(math.exp(3))        # 20.085536923187668
print(math.expm1(3))      # 19.085536923187668

print(math.log2(16))      # 4.0
print(math.log10(1000))   # 3.0
print(math.log(16,2))     # 4.0
print(math.log(50,3))     # 3.5608767950073115

print(math.pow(2,4))      # 16.0

print(math.sqrt(3))       # 1.7320508075688772


3.三角函数

函数 说明
math.cos(x) 返回 x 弧度的余弦值。
math.sin(x) 返回 x 弧度的正弦值。
math.tan(x) 返回 x 弧度的正切值。
math.acos(x) 以弧度为单位返回 x 的反余弦值。
math.asin(x) 以弧度为单位返回 x 的反正弦值。
math.atan(x) 以弧度为单位返回 x 的反正切值。
math.atan2(y,x) 以弧度为单位返回 atan(y / x)atan2() 的点的两个输入的符号都是已知的,因此它可以计算角度的正确象限。结果是在 -pipi 之间。
import math

x = math.pi / 3
print(x)               # 1.0471975511965976

y1 = math.cos(x)       
y2 = math.sin(x)       
y3 = math.tan(x)       
print(y1)              # 0.5000000000000001 
print(y2)              # 0.8660254037844386
print(y3)              # 1.7320508075688767

print(math.acos(y1))   # 1.0471975511965976
print(math.asin(y2))   # 1.0471975511965976
print(math.atan(y3))   # 1.0471975511965976

print(math.atan2(math.sqrt(3),1))   # 1.0471975511965976
print(math.atan2(-math.sqrt(3),1))  # -1.0471975511965976


4.角度转换

函数 说明
math.degrees(x) 将角度 x 从弧度转换为度数。
math.radians(x) 将角度 x 从度数转换为弧度。
import math

x = math.pi 
deg = math.degrees(x)   
rad = math.radians(deg)
print(deg)  # 180.0
print(rad)  # 3.141592653589793


5.双曲函数

函数 说明
math.cosh(x) 返回 x 的双曲余弦值。
math.sinh(x) 返回 x 的双曲正弦值。
math.tanh(x) 返回 x 的双曲正弦值。
math.acosh(x) 返回 x 的反双曲余弦值。
math.asinh(x) 返回 x 的反双曲正弦值。
math.atanh(x) 返回 x 的反双曲正切值。
import math

x = 1.5
y1 = math.cosh(x)  
y2 = math.sinh(x)  
y3 = math.tanh(x)  
print(y1)  # 2.352409615243247
print(y2)  # 2.1292794550948173
print(y3)  # 0.9051482536448664

print(math.acosh(y1))  # 1.5
print(math.asinh(y2))  # 1.5
print(math.atanh(y3))  # 1.4999999999999998


6.特殊函数

函数 说明
math.erf(x) 返回 x 处的 error function。erf()函数可用于计算传统的统计函数,如累积标准正态分布。
math.erfc(x) 返回 x 处的互补误差函数。 互补错误函数 定义为 1.0 - erf(x)
math.gamma(x) 返回 x 处的 伽马函数 值。
math.lgamma(x) 返回Gamma函数在 x 绝对值的自然对数
import math

print(math.erf(2))       # 0.9953222650189527
print(math.erfc(2))      # 0.004677734981047266
print(math.gamma(0.5))	 # 1.7724538509055159
print(math.lgamma(3))	 # 0.693147180559945


7.欧几里得函数

函数 说明
math.dist(p,q) 返回 pq 两点之间的欧几里得距离。
math.hypot(coordinates) 返回coordinates的欧几里得范数。

math.dist(p,q)等价于 sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))
math.hypot(coordinates)等价于 sqrt(sum(x**2 for x in coordinates))

import math

p1 = (0,0)
q1 = (3,4)
print(math.dist(p1,q1))  # 5.0

p2 = (1,5,3,-5)
q2 = (2,4,6,1)
print(math.dist(p2,q2))  # 6.855654600401045

print(math.hypot(3,4))   # 5.0
print(math.hypot(3,4,10,5))  # 12.24744871391589


8.常量

常量 说明
math.pi 数学常数 π = 3.141592…,精确到可用精度。
math.e 数学常数 e = 2.718281…,精确到可用精度。
math.tau 数学常数 τ = 6.283185…,精确到可用精度。Tau 是一个圆周常数,等于 2π,圆的周长与半径之比。
math.inf 浮点正无穷大。(对于负无穷大,使用 -math.inf 。)相当于 float('inf') 的输出
math.nan 浮点“非数字”(NaN)值。 相当于 float('nan') 的输出
import math

print(math.pi)    # 3.141592653589793
print(math.e)     # 2.718281828459045
print(math.tau)   # 6.283185307179586
print(math.inf)   # inf
print(-math.inf)  # -inf
print(math.nan)   # nan

本文地址:https://blog.csdn.net/weixin_43675917/article/details/109610289

相关标签: python标准库