math模块详解
Python最重要的功能之一就是它的数学计算能力。Python内置的数学math模块是进行数学运算和计算的重要工具。math模块提供了基本算术运算的函数,如加法、减法、乘法和除法。它还提供了更高级的关于复杂浮点数学运算的函数,比如对数函数、幂函数、指数函数、三角函数、角度转换、双曲函数等。
1、常数
math库提供了一些常数,如π、自然常数e等。这些常数可以通过math库中的常数变量来获取。例如:
动手练一练:
import math
print('数学math模块中的常量:')
print('圆周率π:', math.pi)
print('圆周常数Tau(2π):', math.tau)
print('自然常数e:', math.e)
print('浮点数无穷大inf:', math.inf)
print('非数值nan:', math.nan)
执行以上代码,输出结果为:
数学math模块中的常量:
圆周率π: 3.141592653589793
圆周常数Tau(2π): 6.283185307179586
自然常数e: 2.718281828459045
浮点数无穷大inf: inf
非数值nan: nan
2、通用函数
动手练一练:
import math
# 通用函数
print("数学math模块中的通用函数:")
print("获取大于或等于指定值的最小整数(向上取整):", math.ceil(6.3)) # 输出 7
print("获取小于或等于指定值的最大整数(向下取整):", math.floor(6.3)) # 输出 6
print("获取指定值的绝对值:", math.fabs(-6.3)) # 输出 6.3
print("获取指定值的阶乘:", math.factorial(6)) # 输出 720
print("获取指定值x和y的最大公约数:", math.gcd(60, 80)) # 输出 20
print("获取指定值的小数和整数部分:", math.modf(6.3)) # 输出 (0.2999999999999998, 6.0)
print("获取指定值x对y取模,x-n*y其中n=math.floor(x/y):", math.fmod(6.4, 2)) # 输出 0.40000000000000036
print("获取指定值x相对于y的余数,x-n*y其中n=math.ceil(x/y):", math.remainder(6.4, 2)) # 输出 0.40000000000000036
print("获取指定值x的绝对值和指定值y的符号:", math.copysign(6.4, -1)) # 输出 -6.4
print("返回一个元组(x,y),使得指定值=x*2**y:", math.frexp(6.4)) # 输出 (0.8, 3)
print("根据指定值x和y,返回x*(2**y):", math.ldexp(0.73, 5)) # 输出 23.36
print("返回指定列表的和:", math.fsum([2.4, 4.3, 2.0])) # 输出 8.7
print("返回指定值x的整数部分:", math.trunc(6.4)) # 输出 6
print("判断浮点数是否接近,默认相对误差为1e-9:", math.isclose(6.4002, 6.4003)) # 输出 False
print("判断指定值是否是有限数值:", math.isfinite(6.4)) # 输出 True
print("判断指定值是否是正或者负无穷:", math.isinf(-math.inf)) # 输出 True
print("判断指定值是否是非数值类型:", math.isnan(6.4)) # 输出 False
执行以上代码,输出结果为:
数学math模块中的通用函数:
获取大于或等于指定值的最小整数(向上取整): 7
获取小于或等于指定值的最大整数(向下取整): 6
获取指定值的绝对值: 6.3
获取指定值的阶乘: 720
获取指定值x和y的最大公约数: 20
获取指定值的小数和整数部分: (0.2999999999999998, 6.0)
获取指定值x对y取模,x-n*y其中n=math.floor(x/y): 0.40000000000000036
获取指定值x相对于y的余数,x-n*y其中n=math.ceil(x/y): 0.40000000000000036
获取指定值x的绝对值和指定值y的符号: -6.4
返回一个元组(x,y),使得指定值=x*2**y: (0.8, 3)
根据指定值x和y,返回x*(2**y): 23.36
返回指定列表的和: 8.7
返回指定值x的整数部分: 6
判断浮点数是否接近,默认相对误差为1e-9: False
判断指定值是否是有限数值: True
判断指定值是否是正或者负无穷: True
判断指定值是否是非数值类型: False
3、幂函数与对数函数
动手练一练:
import math
print("math模块中幂函数与对数函数相关操作:")
print("math模块获取e的x次幂:", math.exp(3)) # 输出 20.085536923187668
print("math模块获取e的x次幂减:", math.expm1(3)) # 输出 19.085536923187668
print("math模块获取x的对数,默认底为e:", math.log(3)) # 输出 1.0986122886681098
print("math模块获取1加x的自然对数(底为e):", math.log1p(2)) # 输出 1.0986122886681098
print("math模块获取x以2的对数,比math.log(x,2)更加精确:", math.log2(5)) # 输出 2.321928094887362
print("math模块获取x以10的对数,比math.log(x,10)更加精确:", math.log10(5)) # 输出 0.6989700043360189
print("math模块获取x的y次幂:", math.pow(3,2)) # 输出 9.0
print("math模块获取x的平方根:", math.sqrt(9)) # 输出 3.0
执行以上代码,输出结果为:
math模块中幂函数与对数函数相关操作:
math模块获取e的x次幂: 20.085536923187668
math模块获取e的x次幂减: 19.085536923187668
math模块获取x的对数,默认底为e: 1.0986122886681098
math模块获取1加x的自然对数(底为e): 1.0986122886681098
math模块获取x以2的对数,比math.log(x,2)更加精确: 2.321928094887362
math模块获取x以10的对数,比math.log(x,10)更加精确: 0.6989700043360189
math模块获取x的y次幂: 9.0
math模块获取x的平方根: 3.0
4、三角函数
动手练一练:
import math
print("math模块中三角函数相关操作:")
print("math模块以弧度为单位返回x的反余弦值:", math.acos(0.6)) # 输出 0.9272952180016123
print("math模块以弧度为单位返回x的反正弦值:", math.asin(0.6)) # 输出 0.6435011087932844
print("math模块以弧度为单位返回x的反正切值:", math.atan(0.6)) # 输出 0.5404195002705842
print("math模块以弧度为单位返回x/y的反余弦值:", math.atan2(2, 3)) # 输出 0.5880026035475675
print("math模块返回x弧度的余弦值:", math.cos(1.5541411244132188)) # 输出 0.01665443237858618
print("math模块返回x弧度的正弦值:", math.sin(0.4413147841321543)) # 输出 0.42712864970198705
print("math模块返回x弧度的正切值:", math.tan(0.5412315461312343)) # 输出 0.6011049209612483
print("math模块返回原点到(x,y)的欧式距离,等于math.sqrt(x*x + y*y):", math.hypot(3,4)) # 输出 5.0
执行以上代码,输出结果为:
math模块中三角函数相关操作:
math模块以弧度为单位返回x的反余弦值: 0.9272952180016123
math模块以弧度为单位返回x的反正弦值: 0.6435011087932844
math模块以弧度为单位返回x的反正切值: 0.5404195002705842
math模块以弧度为单位返回x/y的反余弦值: 0.5880026035475675
math模块返回x弧度的余弦值: 0.01665443237858618
math模块返回x弧度的正弦值: 0.42712864970198705
math模块返回x弧度的正切值: 0.6011049209612483
math模块返回原点到(x,y)的欧式距离,等于math.sqrt(x*x + y*y): 5.0
5、角度和弧度互换
动手练一练:
import math
print("math模块中角度和弧度互换相关操作:")
print("弧度转度数", math.degrees(0.3)) # 输出 17.188733853924695
print("度数转弧度", math.radians(17.188733853924695)) # 输出 0.3
执行以上代码,输出结果为:
math模块中角度和弧度互换相关操作:
弧度转度数 17.188733853924695
度数转弧度 0.3