Med hjälp av math, Pythons standardmodul för matematiska funktioner, kan du beräkna exponentiella och logaritmiska funktioner (naturlig logaritm, vanlig logaritm och binär logaritm).
Följande förklaras här, tillsammans med exempelkod.
- Basen för den naturliga logaritmen (Napier-talet):
math.e
- Effekt::
**
operatör,pow()
,math.pow()
- Kvadratrot (rot):
math.sqrt()
- Exponentialfunktion (naturlig exponentialfunktion):
math.exp()
- en logaritmisk funktion:
math.log()
,math.log10()
,math.log2()
Basen för den naturliga logaritmen (Napier-talet): math.e
Basen för den naturliga logaritmen (Napier-talet) finns som en konstant i matematikmodulen, betecknad med math.e.
import math
print(math.e)
# 2.718281828459045
Kraft: ** operator, pow(), math.pow(): **operatör, pow(), math.pow()
För att beräkna potenser använder du antingen **-operatorn, den inbyggda funktionen pow() eller math.pow().
Y-kvadratet till x erhålls på följande sätt
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() omvandlar argumentet till en flyttalstyp. Pythons inbyggda funktion pow() använder däremot __pow()__ som definieras för varje typ.
Pow() tillåter till exempel att komplexa typer anges som argument, men math.pow() kan inte konvertera komplexa typer till floattyper, vilket resulterar i ett fel.
print(pow(1 + 1j, 2))
# 2j
# print(math.pow(1 + 1j, 2))
# TypeError: can't convert complex to float
Pythons inbyggda funktion pow() har också ett tredje argument, pow(x, y, z), som returnerar återstoden av z till y-potensen av x. Det är samma beräkning som pow(x, y) % z, men pow(x, y, z) är effektivare.
print(pow(2, 4, 5))
# 1
Kvadratrot (rot): math.sqrt()
Kvadratroten (root) kan sättas till **0,5 med ** eller math.sqrt().
print(2**0.5)
# 1.4142135623730951
print(math.sqrt(2))
# 1.4142135623730951
print(2**0.5 == math.sqrt(2))
# True
Liksom math.pow() omvandlar math.sqrt() argumenten till flyttalstyper för bearbetning, så om du anger en typ som inte kan omvandlas till en flyttalstyp kommer det att resultera i ett TypeError.
print((-3 + 4j)**0.5)
# (1.0000000000000002+2j)
# print(math.sqrt(-3 + 4j))
# TypeError: can't convert complex to float
Dessutom kan math.sqrt() inte behandla negativa värden, vilket resulterar i ett ValueError.
print((-1)**0.5)
# (6.123233995736766e-17+1j)
# print(math.sqrt(-1))
# ValueError: math domain error
Observera att när det gäller komplexa tal visar exemplet med **-operatorn ett fel, men cmath-modulen ger ett mer exakt värde. Negativa värden kan också hanteras.
import cmath
print(cmath.sqrt(-3 + 4j))
# (1+2j)
print(cmath.sqrt(-1))
# 1j
Exponentialfunktion (naturlig exponentialfunktion): math.exp()
För att beräkna potensen av basen för den naturliga logaritmen (Napier-talet) e, använd math.exp().
math.exp(x) ger x i kvadrat av e.
math.exp(x) är inte likvärdigt med ”math.e ** x” och math.exp(x) är mer exakt.
print(math.exp(2))
# 7.38905609893065
print(math.exp(2) == math.e**2)
# False
en logaritmisk funktion: math.log(), math.log10(), math.log2()
För att beräkna den logaritmiska funktionen använder du math.log(),math.log10(),math.log2().
math.log(x, y) returnerar logaritmen för x med y som bas.
print(math.log(25, 5))
# 2.0
Om det andra argumentet utelämnas visas den naturliga logaritmen nedan.
logaritm
Inom matematiken kan den naturliga logaritmen (logaritmen med Napier-talet e som bas), representerad av log eller ln, beräknas genom math.log(x).
print(math.log(math.e))
# 1.0
logaritm (bas 10)
Den vanliga logaritmen (logaritm med bas 10) kan beräknas med math.log10(x), som är mer exakt än math.log(x, 10).
print(math.log10(100000))
# 5.0
binär logaritm
Den binära logaritmen (logaritm med bas 2) kan beräknas med math.log2(x), som är mer exakt än math.log(x, 2).
print(math.log2(1024))
# 10.0