Похоже, не понимает причину ошибки

#python

#python

Вопрос:

попытка преобразовать некоторую математическую формулу в код для решения для анализа механизма с четырьмя столбцами

 import math

a = input('the length of link ABn')
a = float(a)
b = input('the length of link BCn')
b = float(b)
c = input('the length of link CDn')
c = float(c)
d = input('the length of link DAn')
d = float(d)
Theta = input('Interval of the input angle in degreesn')
Theta = float(Theta)
Theta = math.radians(Theta)
Va = input('Angular velocity of the input link AB in rad/sn')
Va = float(Va)
Aa = input('Angular acceleration of the input link in rad/s^2n')
Aa = float(Aa)


K1 = d/a
K2 = d/c
K3 = (a**2 - b**2   c**2   d**2)/2*a*c
A = (1 - K2)*math.cos(Theta)   K3   K1
A = float(A)
B = -2*math.sin(Theta)
B = float(B)
C = K1   K3 - (1   K2)*math.cos(Theta)
C = float(C)


Phi1 = 2*math.degrees(math.atan((-B (B**2 - 4*A*C)**0.5)/2*A))
Phi2 = 2*math.atan((-B-math.sqrt(B**2 - 4*A*C))/(2*A))
print('The Angular displacement of the output link DC in degrees areand', Phi2)
 

но я продолжаю получать эту трассировку

 Traceback (most recent call last):
  File "C:UsersDELLDesktoppy4ey.py", line 35, in <module>
    Phi2 = 2*math.atan((-B-math.sqrt(B**2 - 4*A*C))/(2*A))
ValueError: math domain error
 

что я могу сделать?

Комментарии:

1. Проверьте, приняли ли вы значение sqrt отрицательного числа

2. Вероятно, вы захотите убедиться, что оба Phi1 и Phi2 являются обеими степенями или обоими радианами. Но это другая ошибка. @AlexHall верен.

3. вы могли бы разделить вычисления на более простые части — x1 = B**2 - 4*A*C , x2 = math.sqrt(x1) , и т. Д. И Тогда ошибка должна показать вам, в какой части у вас возникает проблема. И затем вы можете использовать print(x1) , print(x2) , и т.д. чтобы узнать, есть ли у вас хорошие значения. Как упоминал @AlexHall, вы можете использовать отрицательное значение math.sqrt() , в котором его нет domain (и тогда вы получите сообщение об ошибке math domain error ). Если вы запустите math.sqrt(-1) , вы получите то же сообщение об ошибке.