ValueError:math域错误

我只是在用Python进行工程中的数值方法testing。

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 

我已经缩小到日志,因为当我删除日志和添加不同的function,它的工作原理。 我认为这是因为某些干扰基地,我不知道如何。 任何人都可以提出解决scheme

您的代码正在做一个小于或等于零的数字的log 。 这在math上是未定义的,所以Python的log函数引发了一个exception。 这是一个例子:

 >>> 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]值是从哪里来的,但是希望这会使你走上正确的轨道。