After doing for loop in my code, there is an error in one line:
RuntimeWarning: divide by zero encountered in double_scalars
and in another line two errors:
RuntimeWarning: divide by zero encountered in double_scalars
RuntimeWarning: invalid value encountered in arcsin
I found it might be problem with float values, but im not sure about it and im typing it here for looking yours help. 🙂
Here is the code:
T_max = 0.5 * v_PM(Me) * RTOD
DT = (90 - T_max) - np.fix(90 - T_max)
n = int(T_max * 2)
P = np.zeros((n+1))
T = np.zeros((n+1))
M = np.zeros((n+1))
RR = np.zeros((n+1))
LR = np.zeros((n+1))
SL = np.zeros((n+1))
for m in range(n+1):
T[m] = (DT + m) * DTOR
func = lambda x: T[m] - v_PM(x)
M[m] = brentq(func, 1, Me+1)
M[0] = 0
P[m] = TR * np.tan(T[m]) #X-AXIS POINTS
P[0] = 0
RR[m] = -TR / P[m]
RR[0] = 0
LR[m] = (np.tan(T[m] + np.arcsin(1 / M[m])))
LR[0] = 0
SL[m] = -RR[m]
SL[0] = 0
I defined earlier (before loop) v_PM
and it's equal
v_PM = lambda x : (A * np.arctan(np.sqrt(B * (x ** 2 - 1))) - np.arctan(np.sqrt(x ** 2 - 1)))
As i mentioned, error
RuntimeWarning: divide by zero encountered in double_scalars
refer to RR[m] = -TR / P[m]
and two errors
RuntimeWarning: divide by zero encountered in double_scalars
and
RuntimeWarning: invalid value encountered in arcsin
refers to:
LR[m] = (np.tan(T[m] + np.arcsin(1 / M[m])))
I put there also P[0] = 0
and M[0] = 0
etc. because i want to have first element as 0.
I dont know if i can forget about this error and move on with my code or if it is some serious problem. Thanks for your help.
Best Answer
Those are not actual errors, but warnings. They are there because you are trying to divide something by zero.
Namely, you are setting
M[0] = 0
and then dividing byM[0]
(at first iteration, wherem = 0
) and same forP[0]
.The question is, what do you want the first values to be?
Maybe a solution would be initialize the zero values as you wish (before the loop) and start the loop with
m=1
(so usingfor m in range(1,n+1):
). Is that what you needed?However, the warning may still be there if at different iterations
P[m]
orM[m]
will be zero.