文章目录
- Python中的数值运算函数及math库详解
- 一、内置数值运算函数
- 1. 基本数值运算函数
- 2. 类型转换函数
- 3. 进制转换函数
- 二、math库中的数学常数
- 三、math库常用数学函数
- 1. 数论与表示函数
- 2. 幂函数与对数函数
- 3. 三角函数
- 4. 角度转换
- 5. 双曲函数
- 6. 特殊函数
- 四、实际应用示例
- 1. 计算圆的面积和周长
- 2. 解二次方程
- 3. 计算两点间距离
- 4. 统计函数(使用math.fsum提高精度)
- 五、注意事项
- 六、性能比较示例
Python中的数值运算函数及math库详解
一、内置数值运算函数
1. 基本数值运算函数
abs(x) # 返回x的绝对值
pow(x, y) # 返回x的y次幂,等价于x**y
round(x[, n]) # 返回x的四舍五入值,n表示小数位数
divmod(a, b) # 返回商和余数的元组(a//b, a%b)
2. 类型转换函数
int(x) # 转换为整数
float(x) # 转换为浮点数
complex(re, im) # 创建复数
3. 进制转换函数
bin(x) # 整数转二进制字符串
oct(x) # 整数转八进制字符串
hex(x) # 整数转十六进制字符串
二、math库中的数学常数
import mathmath.pi # 圆周率π ≈ 3.141592653589793
math.e # 自然常数e ≈ 2.718281828459045
math.tau # 2π ≈ 6.283185307179586 (Python 3.6+)
math.inf # 正无穷大
math.nan # 非数字值(Not a Number)
三、math库常用数学函数
1. 数论与表示函数
math.ceil(x) # 向上取整
math.floor(x) # 向下取整
math.trunc(x) # 截断小数部分
math.fabs(x) # 浮点数绝对值
math.factorial(x) # 阶乘x!
math.gcd(a, b) # 最大公约数(Python 3.5+)
math.isfinite(x) # 判断x是否为有限数
math.isinf(x) # 判断x是否为无穷大
math.isnan(x) # 判断x是否为NaN
2. 幂函数与对数函数
math.exp(x) # e的x次幂
math.expm1(x) # e的x次幂减1,精度更高
math.log(x[, base]) # 对数函数,base默认为e
math.log1p(x) # ln(1+x),x接近0时更精确
math.log2(x) # 以2为底的对数(Python 3.3+)
math.log10(x) # 以10为底的对数
math.pow(x, y) # x的y次幂(结果为浮点数)
math.sqrt(x) # 平方根
3. 三角函数
math.sin(x) # 正弦(弧度制)
math.cos(x) # 余弦(弧度制)
math.tan(x) # 正切(弧度制)
math.asin(x) # 反正弦
math.acos(x) # 反余弦
math.atan(x) # 反正切
math.atan2(y, x) # y/x的反正切
math.hypot(x, y) # 欧几里得范数√(x² + y²)
4. 角度转换
math.degrees(x) # 弧度转角度
math.radians(x) # 角度转弧度
5. 双曲函数
math.sinh(x) # 双曲正弦
math.cosh(x) # 双曲余弦
math.tanh(x) # 双曲正切
math.asinh(x) # 反双曲正弦
math.acosh(x) # 反双曲余弦
math.atanh(x) # 反双曲正切
6. 特殊函数
math.erf(x) # 误差函数
math.erfc(x) # 互补误差函数
math.gamma(x) # Gamma函数
math.lgamma(x) # Gamma函数的绝对值的自然对数
四、实际应用示例
1. 计算圆的面积和周长
import mathradius = 5
area = math.pi * math.pow(radius, 2)
circumference = 2 * math.pi * radius
2. 解二次方程
import mathdef solve_quadratic(a, b, c):discriminant = b**2 - 4*a*cif discriminant < 0:return Nonex1 = (-b + math.sqrt(discriminant)) / (2*a)x2 = (-b - math.sqrt(discriminant)) / (2*a)return x1, x2
3. 计算两点间距离
import mathdef distance(p1, p2):return math.hypot(p2[0]-p1[0], p2[1]-p1[1])
4. 统计函数(使用math.fsum提高精度)
import mathdata = [1.1, 2.2, 3.3, 4.4, 5.5]
total = math.fsum(data) # 比sum()精度更高
五、注意事项
- math模块的函数通常比内置函数更精确,但速度可能稍慢
- math模块的函数大多只接受实数参数,复数运算需使用cmath模块
- 对于大数运算,考虑使用decimal模块提高精度
- 科学计算推荐使用NumPy库,它提供了更丰富的数学函数和数组支持
六、性能比较示例
import math
import timeit# 比较math.sqrt和**0.5的性能
t1 = timeit.timeit('math.sqrt(100)', setup='import math')
t2 = timeit.timeit('100**0.5')
print(f"math.sqrt: {t1}, **0.5: {t2}")
通过合理选择这些数值运算函数和math库函数,可以高效地完成各种数学计算任务。🐻🐻🐻