Skip to content Skip to sidebar Skip to footer

Numpy.sin(pi) Returns Negative Value

The following code: a = numpy.sin(2. * numpy.pi) print(a < 0) return 'True'. But in reality a = 0. How could I fix that? In addition, I have a matrix with a lot of value like '

Solution 1:

This because of floating point arithmetic, and accuracy reasons. The result is the best approximation of sin one can get to be representable as a floating point number. Usually you solve near-zero problems like this:

a = numpy.sin(2. * numpy.pi)
print(abs(a) < 1e-10)

You may also want to read this.

Solution 2:

In reality a <> 0 because in reality numpy.pi is not Pi (what is Pi in reality anyway?) - it is just its approximation and numpy.sin is not sine - it is its approximation as well. So you have to take some error into account, for example

print( -0.0000001 < a < 0.0000001 )

or use some other tricks (representing Pi differently - not as a float number ).

Solution 3:

>>>import numpy>>>a = numpy.sin(2. * numpy.pi)>>>numpy.allclose(a, 0)
True
>>>numpy.clip(numpy.array([-0.1, 1.0, 2.0]), 0, np.inf)
array([ 0.,  1.,  2.])

Solution 4:

When I calculate

numpy.sin(2 * numpy.pi)

I get

-2.4492935982947064e-16 # i.e. -0.0000000000000002

This is a classic floating point accuracy error. You are better taking a tolerance approach to testing the value:

if abs(a) < 0.0001:

Post a Comment for "Numpy.sin(pi) Returns Negative Value"