ValueError: math domain error

前端 未结 4 1858
萌比男神i
萌比男神i 2020-12-01 02:35

I was just testing an example from Numerical Methods in Engineering with Python.

from numpy import zeros, array
from math import sin, log
from newto         


        
相关标签:
4条回答
  • 2020-12-01 02:49

    You are trying to do a logarithm of something that is not positive.

    Logarithms figure out the base after being given a number and the power it was raised to. log(0) means that something raised to the power of 2 is 0. An exponent can never result in 0*, which means that log(0) has no answer, thus throwing the math domain error

    *Note: 0^0 can result in 0, but can also result in 1 at the same time. This problem is heavily argued over.

    0 讨论(0)
  • 2020-12-01 02:54

    you are getting math domain error for either one of the reason : either you are trying to use a negative number inside log function or a zero value.

    0 讨论(0)
  • 2020-12-01 03:11

    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 "<pyshell#59>", line 1, in <module>
        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.

    0 讨论(0)
  • 2020-12-01 03:16

    You may also use math.log1p.

    According to the official documentation :

    math.log1p(x)

    Return the natural logarithm of 1+x (base e). The result is calculated in a way which is accurate for x near zero.

    You may convert back to the original value using math.expm1 which returns e raised to the power x, minus 1.

    0 讨论(0)
提交回复
热议问题