ValueError: ошибка математического домена
Я просто тестировал пример из численные методы в технике с 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
я сузил его до журнала, так как когда я удаляю журнал и добавляю другую функцию, он работает. Я предполагаю, что это из-за какого-то вмешательства в базу, я не могу понять, как. Может кто-нибудь предложить решение?
1 ответ:
ваш код делает
log
числа, которое меньше или равно нулю. Это математически неопределенно, поэтому Pythonlog
функция вызывает исключение. Вот пример:>>> 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]
значение, но, надеюсь, это приведет вас на правильный путь.