在 Python 中計算指數和對數函數(exp、log、log10、log2)

商業

使用 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