Python 3.3 Side余弦规则计算器错误

时间:2013-11-25 14:48:25

标签: python calculator cosine cos

我试图用Python制作一个计算器,但我收到了错误并且我已经输入了余弦规则。

这就是我所拥有的

x = float(input("First Side "))
y = float(input("Second Side "))
z = float(input("Angle which isn't opposite First or Second Side "))
print (" ")
print ("Side is: "+str(math.sqrt(((x**2)+(y**2))-(2*x*y*(math.cos(z)*(180/math.pi))))))

这是我的错误

Traceback (most recent call last):
  File "D:/Users/---------/Python/test calc.py", line 339, in <module>
    print ("Side is: "+str(math.sqrt(((x**2)+(y**2))-(2*x*y*(math.cos(z)*(180/math.pi))))))
ValueError: math domain error

你通过这样做来计算余弦规则:

a=√(b^2+c^2−2*b*c*cos(α))

在我所做的事情中

x=b
y=c
z=α

3 个答案:

答案 0 :(得分:2)

对我有用;我想你要输入三角形不可能的数字。在常规计算器中尝试输入,看看它是否有效。

另外,请注意您的角度需要以弧度为单位(或者您需要将其转换为度数)。

我尝试了3,4和3.14 / 2的两侧(弧度约为90度)并获得了4.99,这近似于5的正确答案。

答案 1 :(得分:2)

2*x*y*(math.cos(z)*(180/math.pi))
你似乎试图将度数转换为弧度?但是(1)因素是颠倒的,(2)它需要在cos(...)内。

所以你可能意味着

2*x*y*math.cos(z*math.pi/180)

(检查:当z为180度时,上面的代码给出了pi弧度)。

答案 2 :(得分:1)

似乎math.cos(z)*(180 / math.pi)是错误的部分,在某些情况下math.sqrt内部的内容为负。

print ("Side is: "+str(math.sqrt(((x**2)+(y**2))-(2*x*y*math.cos(z)))))

math.cos(z*math.pi/180)将是您想要的。

(编辑:更正了颠倒的部分。谢谢:andrew cooke))