После выполнения для цикла в моем коде ошибка в одной строке:
RuntimeWarning: divide by zero encountered in double_scalars
и в другой строке две ошибки:
RuntimeWarning: divide by zero encountered in double_scalars
RuntimeWarning: invalid value encountered in arcsin
Я обнаружил, что это может быть проблема с плавающими значениями, но я не уверен в этом, и я набираю его здесь, чтобы посмотреть вашу помощь :)
Вот код:
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
#Mach from T[i] using T[i] = v_PM (FALSE POSITION)
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 SLOPES
RR[m] = -TR / P[m]
RR[0] = 0
#LR slopes
LR[m] = (np.tan(T[m] + np.arcsin(1 / M[m])))
LR[0] = 0
SL[m] = -RR[m]
SL[0] = 0
Я определил ранее (до цикла) v_PM
и он равен
v_PM = lambda x : (A * np.arctan(np.sqrt(B * (x ** 2 - 1))) - np.arctan(np.sqrt(x ** 2 - 1)))
Как я уже говорил, ошибка
RuntimeWarning: divide by zero encountered in double_scalars
см. RR[m] = -TR / P[m]
и две ошибки
RuntimeWarning: divide by zero encountered in double_scalars
и
RuntimeWarning: invalid value encountered in arcsin
относится к:
LR[m] = (np.tan(T[m] + np.arcsin(1 / M[m])))
Я также поставил туда P[0] = 0
и M[0] = 0
и т. Д., Потому что я хочу, чтобы первый элемент был равен 0.
Я не знаю, смогу ли я забыть об этой ошибке и перейти к своему коду или это серьезная проблема. Спасибо за вашу помощь.