program story

ValueError : 수학 도메인 오류

inputbox 2020. 9. 10. 07:49
반응형

ValueError : 수학 도메인 오류


저는 Python으로 엔지니어링의 Numerical Methods 의 예제를 테스트하고있었습니다 .

from numpy import zeros, array
from math import sin, log
from newtonRaphson2 import *

def f(x):
    f = zeros(len(x))
    f[0] = sin(x[0]) + x[1]**2 + log(x[2]) - 7.0
    f[1] = 3.0*x[0] + 2.0**x[1] - x[2]**3 + 1.0
    f[2] = x[0] + x[1] + x[2] -5.0
    return f

x = array([1.0, 1.0, 1.0])
print newtonRaphson2(f,x)

실행하면 다음 오류가 표시됩니다.

File "example NR2method.py", line 8, in f
    f[0] = sin(x[0]) + x[1]**2 + log(x[2]) - 7.0
ValueError: math domain error

로그를 제거하고 다른 기능을 추가하면 작동하므로 로그로 좁혔습니다. 나는 그것이 기지와의 일종의 간섭 때문이라고 생각합니다. 나는 방법을 알 수 없습니다. 누구든지 해결책을 제안 할 수 있습니까?


코드가 log0보다 작거나 같은 숫자를 수행하고 있습니다. 그것은 수학적으로 정의되지 않았으므로 파이썬의 log함수는 예외를 발생시킵니다. 예를 들면 다음과 같습니다.

>>> from math import log
>>> log(-1)
Traceback (most recent call last):
  File "<pyshell#59>", line 1, in <module>
    log(-1)
ValueError: math domain error

newtonRaphson2함수가 무엇을하는지 모르면 잘못된 x[2]값이 어디에서 오는지 짐작할 수 없지만 이것이 올바른 길로 인도 할 수 있기를 바랍니다.


당신은 양수가 아닌 어떤 것에 대한 로그를하려고합니다.

로그는 숫자가 주어지고 제곱 된 후 밑수를 알아냅니다. log(0)의 힘으로 제기 된 무언가 20입니다. 지수는 0*가 될 수 없습니다 . 이는 log(0)답이 없음 을 의미 하므로math domain error

* 참고 : 0^0결과는 0이지만 동시에 발생할 수도 있습니다 1. 이 문제는 논란이 많다.

참고 URL : https://stackoverflow.com/questions/15890503/valueerror-math-domain-error

반응형