2017-03-23 3 views
0

파이썬에서 0의 로그를 쓰려고합니다.파이썬에서 0의 로그 로그

from math import log 
log(0) 

그리고 나에게 예외가 발생합니다.

ValueError: math domain error 

나는 음수의 log 수학적으로 정의되지 않은 것을 이해하고, 파이썬의 logValueError 예외를 발생시킬 수있는 이유입니다. 그러나 0으로 값을 호출 할 때 예외가 발생하는 이유는 무엇입니까? -inf 값을 반환해야하며 파이썬 (as in here)에서 무한 수를 나타낼 수 있음을 알았습니다.

개인적으로 처리하지 않고이 문제를 해결할 수 있습니까? 이런 식으로 할 때 나는 개인적으로 의미한다.

from math import log, inf 
foo = ... # Random value. 
if foo != 0: return log(foo) 
else: return -inf 
+0

foo> 0이면 log (foo) else -inf'는 괜찮은 것 같습니다. – BallpointBen

+3

_It은'-inf' 값을 반환해야합니다. 'log (0)'은 -inf와 같지 않습니다. 그것은 "0에 가깝다"는 한계는 무한히 가려는 경향이 있지만 값 자체는 정의되지 않습니다. –

+0

부정적인 값을'-inf'로도 바꾸고 한계가 있어도 부적합한 @not_a_robot – Adirio

답변

5

실제로 파이썬은 틀리지 않습니다. 제로의 대수는 한계 때문이다, 또한 정의이며, 그것은하지 왼쪽에서 만 오른쪽에서 -inf있어 :

enter image description here

그래서, 아니, 당신이 직접 처리해야합니다. 그건 잘못되었지만 그렇게 할 수 있습니다. 이런 식으로 : log(x) if x != 0 else -inf.

+0

음수를 처리하면 역시 -inf도 반환됩니다. – Adirio

+0

x! = 0이면 log (x) else -inf' 나는'-inf'의 값을 수용 할 수있는 올바른 생각을 포착한다고 생각합니다. 그것은 (정확하게) 음의'x'에 대한 예외를 발생시킵니다. – chepner