반응형
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
로그를 제거하고 다른 기능을 추가하면 작동하므로 로그로 좁혔습니다. 나는 그것이 기지와의 일종의 간섭 때문이라고 생각합니다. 나는 방법을 알 수 없습니다. 누구든지 해결책을 제안 할 수 있습니까?
코드가 log
0보다 작거나 같은 숫자를 수행하고 있습니다. 그것은 수학적으로 정의되지 않았으므로 파이썬의 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)
의 힘으로 제기 된 무언가 2
가 0
입니다. 지수는 0
*가 될 수 없습니다 . 이는 log(0)
답이 없음 을 의미 하므로math domain error
* 참고 : 0^0
결과는 0
이지만 동시에 발생할 수도 있습니다 1
. 이 문제는 논란이 많다.
참고 URL : https://stackoverflow.com/questions/15890503/valueerror-math-domain-error
반응형
'program story' 카테고리의 다른 글
Rails에서 동적 바인딩을 사용하여 원시 업데이트 SQL을 실행하는 방법 (0) | 2020.09.10 |
---|---|
Java는 C ++의 std :: vector보다 배열을 사용하여 8 배 더 빠릅니다. (0) | 2020.09.10 |
이 부동 소수점 최적화가 허용됩니까? (0) | 2020.09.10 |
Python 사전의 스레드 안전성 (0) | 2020.09.10 |
unique_ptr이있는 클래스의 복사 생성자 (0) | 2020.09.10 |