使用 Python 的數學函數標準模塊 math,您可以計算指數和對數函數(自然對數、普通對數和二進制對數)。
此處解釋了以下內容以及示例代碼。
- 自然對數的底(納皮爾數):
math.e
- 力量::
**
操作員,pow()
,math.pow()
- 平方根(根):
math.sqrt()
- 指數函數(自然指數函數):
math.exp()
- 對數函數:
math.log()
,math.log10()
,math.log2()
自然對數的底(納皮爾數):math.e
自然對數的底數(納皮爾數)在數學模塊中作為常數提供,用 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
平方根(根):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