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



我正试图用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=α

在行中

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

你好像想把度数转换成弧度?但是(1)因子是颠倒的,并且(2)它需要在CCD_ 1内部。

所以你可能是指

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

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

它对我有效;我想你输入的数字对于三角形来说是不可能的。试试你在普通计算器中的输入,看看它是否有效。

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

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

看起来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))

最新更新