使用数学,Python的数学函数标准模块,你可以计算指数和对数函数(自然对数、普通对数和二进制对数)。
这里解释一下,并附有示例代码。
- 自然对数(纳皮尔数)的基数:
math.e
- 权力。:
**
经营者,pow()
,math.pow()
- 平方根(root):
math.sqrt()
- 指数函数(自然指数函数):
math.exp()
- 一个对数函数:
math.log()
,math.log10()
,math.log2()
自然对数(纳皮尔数)的基数: math.e
自然对数(Napier数)的基数在数学模块中作为一个常数提供,用math.e表示。
import math
print(math.e)
# 2.718281828459045
权力。**运算符, pow(), math.pow(): **经营者, pow(), math.pow()
要计算幂,可以使用**运算符、内置函数pow()或math.pow()。
x的y平方得到如下结果
x**y
pow(x, y)
math.pow(x, y)
print(2**4)
# 16
print(pow(2, 4))
# 16
print(math.pow(2, 4))
# 16.0
math.pow()将参数转换为浮点类型。另一方面,Python的内置函数pow()使用为每种类型定义的__pow()__。
例如,pow()允许指定复杂类型作为参数,但math.pow()不能将复杂类型转换为浮点类型,导致错误。
print(pow(1 + 1j, 2))
# 2j
# print(math.pow(1 + 1j, 2))
# TypeError: can't convert complex to float
Python内置函数pow()也允许第三个参数,pow(x, y, z),它返回z到x的y次方的余数(余数),它与pow(x, y) % z的计算相同,但pow(x, y, z)更有效率。
print(pow(2, 4, 5))
# 1
平方根(root): math.sqrt()
可以使用**或math.sqrt()将平方根(root)设置为**0.5。
print(2**0.5)
# 1.4142135623730951
print(math.sqrt(2))
# 1.4142135623730951
print(2**0.5 == math.sqrt(2))
# True
和math.pow()一样,math.sqrt()将参数转换为浮点类型进行处理,所以指定一个不能转换为浮点类型的类型将导致一个TypeError。
print((-3 + 4j)**0.5)
# (1.0000000000000002+2j)
# print(math.sqrt(-3 + 4j))
# TypeError: can't convert complex to float
另外,math.sqrt()不能处理负值,导致ValueError。
print((-1)**0.5)
# (6.123233995736766e-17+1j)
# print(math.sqrt(-1))
# ValueError: math domain error
注意,在处理复数时,使用**运算符的例子显示了一个错误,但cmath模块提供了一个更准确的值。负值也可以被处理。
import cmath
print(cmath.sqrt(-3 + 4j))
# (1+2j)
print(cmath.sqrt(-1))
# 1j
指数函数(自然指数函数): math.exp()
要计算自然对数(纳皮尔数)e的基数的幂,请使用math.exp()。
math.exp(x) 返回e的x的平方。
math.exp(x)不等同于 “math.e ** x”,math.exp(x)更准确。
print(math.exp(2))
# 7.38905609893065
print(math.exp(2) == math.e**2)
# False
一个对数函数: math.log(), math.log10(), math.log2()
要计算对数函数,使用math.log(),math.log10(),math.log2()。
math.log(x, y) 返回以 y 为底的 x 的对数。
print(math.log(25, 5))
# 2.0
如果省略第二个参数,自然对数如下所示。
对数
在数学中,自然对数(以纳皮尔数e为底的对数),用log或ln表示,可以用math.log(x)计算。
print(math.log(math.e))
# 1.0
对数(以10为底)
普通对数(以10为底的对数)可以用math.log10(x)计算,它比math.log(x, 10)更精确。
print(math.log10(100000))
# 5.0
二进制对数
二进制对数(以2为底的对数)可以用math.log2(x)计算,它比math.log(x, 2)更准确。
print(math.log2(1024))
# 10.0