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

Rohan Timalsina 10 Oktober 2023
Python-Mathematikdomänenfehler in der math.log-Funktion

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.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Verwandter Artikel - Python Error