HOWTO · Python

Python-Mathematikdomänenfehler in der math.log-Funktion

In diesem Tutorial lernen Sie, ValueError: math domain error in Python zu beheben.

Auf dieser Seite

Der ValueError wird in Python ausgelöst, wenn die Funktion ein gültiges Argument erhält, aber es ist ein unpassender Wert. Wenn Sie beispielsweise der Funktion sqrt() eine negative Zahl zuweisen, gibt sie ValueError zurück.

Wenn der angegebene Wert 0 oder eine negative Zahl in der Funktion math.log() ist, wird ValueError ausgelöst. In diesem Tutorial lernen Sie, wie Sie ValueError: math domain error in Python lösen.

Korrigieren Sie den ValueError: math domain error in der math.log-Funktion mit Python

Die Funktion math.log() berechnet den natürlichen Logarithmus einer Zahl oder den Logarithmus einer Zahl zur Basis. Die Syntax von math.log() ist wie folgt:

math.log(x, base)

Dabei ist x ein erforderlicher Wert, für den der Logarithmus berechnet wird, während Basis ein optionaler Parameter ist. Nach dem Import des Moduls math können wir die Funktion math.log() verwenden.

Wenn Sie eine negative Zahl mit einem Nullwert an die Funktion math.log() übergeben, gibt sie ValueError zurück. Das liegt daran, dass die Logarithmen solcher Zahlen mathematisch undefiniert sind.

import math

print(math.log(-2))

Ausgang:

Traceback (most recent call last):
  File "c:\Users\rhntm\myscript.py", line 2, in <module>
    print(math.log(-2))
ValueError: math domain error

Wir können diesen Fehler beheben, indem wir einen gültigen Eingabewert an die Funktion math.log() übergeben.

import math

print(math.log(2))

Ausgang:

0.6931471805599453

Sie können das Modul decimal verwenden, um einen Wert nahe Null an die Funktion math.log() zu übergeben. Die Methode ln einer Klasse Decimal berechnet den natürlichen Logarithmus eines Dezimalwerts.

import math
import decimal

num = decimal.Decimal("1E-1024")
print(math.log(num))

Ausgang:

Traceback (most recent call last):
  File "c:\Users\rhntm\myscript.py", line 5, in <module>
    print(math.log(num))
ValueError: math domain error

Verwenden wir nun die Methode Decimal ln().

from decimal import Decimal

num = Decimal("1E-1024")
print(num.ln())

Ausgang:

-2357.847135225902780434423250

Jetzt kennen Sie die Gründe für ValueError: math domain error in Pythons math.log()-Funktion. Der ValueError tritt auf, wenn Sie einen ungültigen Eingabewert in der Funktion verwenden, was behoben werden kann, indem Sie der Funktion einen gültigen Wert übergeben.