ValueError: math domain error

匿名 (未验证) 提交于 2019-12-03 01:06:02

问题:

I was just testing an example from Numerical Methods in Engineering with 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) 

When I run it, it shows the following error:

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 

I have narrowed it down to the log as when I remove log and add a different function, it works. I assume it is because of some sort of interference with the base, I can't figure out how. Can anyone suggest a solution?

回答1:

Your code is doing a log of a number that is less than or equal to zero. That's mathematically undefined, so Python's log function raises an exception. Here's an example:

>>> from math import log >>> log(-1) Traceback (most recent call last):   File "", line 1, in      log(-1) ValueError: math domain error 

Without knowing what your newtonRaphson2 function does, I'm not sure I can guess where the invalid x[2] value is coming from, but hopefully this will lead you on the right track.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!