Python的math模块详解(第6节)


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