64
예를 들어 에서 예제를 테스트했습니다. Python을 사용하는 공학의 수치 방법. ValueError : 수학 영역 오류
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
을, 그것을 작동합니다. 나는 그것이 기지와 어떤 종류의 간섭 때문에 있다고 생각한다. 나는 그 방법을 알 수 없다. 누구든지 해결책을 제안 할 수 있습니까?
정의가 방정식 집합, 즉 x [0], x [1] 및 x [2]가 변수 x, y 및 z를 정의하므로 부정 로그를 수행하는 방법을 알지 못합니다. Newton Raphson이 (가) 사용합니다. 해결할 수있는 방정식 세트가 필요합니다. –
또한, 위의 코드에서 x를 정의 할 때 x [2] = 1.0이라고 말하면서 log (1) = 0이 atleast인데 어쨌든 제가 잘못 생각한 것입니다 .. 도움을 주셔서 감사합니다. –
함수의 처음에'print x'를 추가하십시오 ** f **. 방정식 해법이 x의 다른 값을 연속적으로 시도하여 오류를 일으키는 지 확인하게됩니다. – mtadd