Issue
I have identified an issue in my program and I do not know how to fix it :
First, I create with the arange
function an array of values x_lin
from 0.014 to 0.5 with an incrementation of 0.001
After that, I compute a ratio named r1
, and then thanks to an if statement I want to find the value of that ratio into the array created firstly x_lin
.
However, the if statement does not work due to a modification of the values into the array of values.
Here is the code (I added some prints to show the results):
Fa = 400
C0 = 3800
r1 = round(Fa/C0,3)
x_lin = np.arange(0.014, 0.5, 0.001)
j = 0
ligne_r1 = 0
print('xlin=',x_lin)
for j in range(0,np.size(x_lin)):
print('xlin=',x_lin[j], 'r1=',r1, x_lin[j] == r1)
if x_lin[j] == r1:
ligne_r1 = j
As a result for x_lin
I get a good array of value :
xlin= [0.014 0.015 0.016 0.017 0.018 0.019 0.02 ...]
But when x_lin
goes into the if statement it becomes :
xlin= 0.014 r1= 0.105 False
xlin= 0.015 r1= 0.105 False
xlin= 0.016 r1= 0.105 False
xlin= 0.016999999999999998 r1= 0.105 False
xlin= 0.017999999999999995 r1= 0.105 False
xlin= 0.018999999999999996 r1= 0.105 False
xlin= 0.019999999999999997 r1= 0.105 False
xlin= 0.020999999999999994 r1= 0.105 False
...
Consequently, the statement never becomes true.
All my grateful thanks to the StackOverflow community.
Solution
The problem here is that Python can't add exactly 0.001, so it uses an approximate value. But over the whole arange, the floating point errors accumulate and end up giving you an imprecise result.
You can get around it by using integers instead of floats in your operations:
xlin = np.arange(14, 500) / 1000
Answered By - 7evy
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.