본문 바로가기
파이썬

파이썬 ValueError : 수학 도메인 오류

by º기록 2021. 1. 22.
반응형

방금 Python을 사용한 엔지니어링의 수치 적 방법 의 예를 테스트하고있었습니다.

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

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

 

해결 방법

 

코드가 0보다 작거나 같은 숫자의 로그 를 수행합니다. 그것은 수학적으로 정의되지 않았으므로 Python의 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] 값이 어디에서 오는지 추측 할 수 없습니다. 올바른 길.

 

참조 페이지 https://stackoverflow.com/questions/15890503

 

 

반응형

댓글