Bereken exponentiële en logaritmische functies in Python (exp, log, log10, log2)

Bedrijf

Met math, de standaardmodule van Python voor wiskundige functies, kunt u exponentiële en logaritmische functies berekenen (natuurlijke logaritme, gewone logaritme, en binaire logaritme).

Het volgende wordt hier uitgelegd, samen met voorbeeldcode.

  • Basis van natuurlijke logaritme (getal van Napier):math.e
  • Macht::**operator,pow(),math.pow()
  • Vierkantswortel (wortel):math.sqrt()
  • Exponentiële functie (natuurlijke exponentiële functie):math.exp()
  • een logaritmische functie:math.log(),math.log10(),math.log2()

Basis van natuurlijke logaritme (getal van Napier): math.e

De basis van de natuurlijke logaritme (getal van Napier) wordt gegeven als een constante in de wiskunde module, aangeduid met math.e.

import math

print(math.e)
# 2.718281828459045

Macht: ** operator, pow(), math.pow(): **operator, pow(), math.pow()

Om machten te berekenen, gebruik je ofwel de ** operator, ofwel de ingebouwde functie pow(), ofwel math.pow().

De y-kwadraat van x wordt als volgt verkregen

  • 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() converteert het argument naar een floating-point type. Anderzijds gebruikt Python's ingebouwde functie pow() __pow()__ gedefinieerd voor elk type.

Bijvoorbeeld, pow() staat toe dat complexe types gespecificeerd worden als argumenten, maar math.pow() kan geen complexe types omzetten naar float types, wat resulteert in een fout.

print(pow(1 + 1j, 2))
# 2j

# print(math.pow(1 + 1j, 2))
# TypeError: can't convert complex to float

De Python ingebouwde functie pow() laat ook een derde argument toe, pow(x, y, z), dat de rest (rest) van z teruggeeft tot de y-macht van x. Het is dezelfde berekening als pow(x, y) % z, maar pow(x, y, z) is efficiënter.

print(pow(2, 4, 5))
# 1

Vierkantswortel (wortel): math.sqrt()

De vierkantswortel (wortel) kan worden ingesteld op **0,5 met ** of math.sqrt().

print(2**0.5)
# 1.4142135623730951

print(math.sqrt(2))
# 1.4142135623730951

print(2**0.5 == math.sqrt(2))
# True

Net als math.pow() converteert math.sqrt() argumenten naar floating-point types voor verwerking, dus het specificeren van een type dat niet geconverteerd kan worden naar een float type zal resulteren in een TypeError.

print((-3 + 4j)**0.5)
# (1.0000000000000002+2j)

# print(math.sqrt(-3 + 4j))
# TypeError: can't convert complex to float

Ook kan math.sqrt() geen negatieve waarden verwerken, wat resulteert in een ValueError.

print((-1)**0.5)
# (6.123233995736766e-17+1j)

# print(math.sqrt(-1))
# ValueError: math domain error

Merk op dat bij complexe getallen het voorbeeld met de ** operator een fout geeft, maar de cmath module geeft een nauwkeurigere waarde. Negatieve waarden kunnen ook behandeld worden.

import cmath

print(cmath.sqrt(-3 + 4j))
# (1+2j)

print(cmath.sqrt(-1))
# 1j

Exponentiële functie (natuurlijke exponentiële functie): math.exp()

Om de macht van de basis van de natuurlijke logaritme (getal van Napier) e te berekenen, gebruik je math.exp().

math.exp(x) geeft x in het kwadraat van e.
math.exp(x) is niet equivalent met “math.e ** x” en math.exp(x) is nauwkeuriger.

print(math.exp(2))
# 7.38905609893065

print(math.exp(2) == math.e**2)
# False

een logaritmische functie: math.log(), math.log10(), math.log2()

Om de logaritmische functie te berekenen, gebruik je math.log(),math.log10(),math.log2().

math.log(x, y) geeft de logaritme van x met y als basis.

print(math.log(25, 5))
# 2.0

Indien het tweede argument wordt weggelaten, wordt de natuurlijke logaritme hieronder weergegeven.

logaritme

In de wiskunde kan de natuurlijke logaritme (logaritme met het getal e van Napier als basis), weergegeven door log of ln, worden berekend door math.log(x).

print(math.log(math.e))
# 1.0

logaritme (basis 10)

De gewone logaritme (logaritme met basis 10) kan worden berekend met math.log10(x), wat nauwkeuriger is dan math.log(x, 10).

print(math.log10(100000))
# 5.0

binair logaritme

De binaire logaritme (logaritme met basis 2) kan worden berekend met math.log2(x), wat nauwkeuriger is dan math.log(x, 2).

print(math.log2(1024))
# 10.0