#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)
, вы получите то же сообщение об ошибке.