我试图用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=α
答案 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))