使用正弦时为什么会出现数学域错误?

时间:2016-03-04 23:42:14

标签: python-2.7

我不确定原因,但每次尝试运行时,我都会在此函数上出错。任何帮助将不胜感激。

def lawofsinsang(A,B,a,b):
    if not A and B:
        if a and b:
            return (math.asin((((math.sin(B)) * a) / b)))
    else:
        return A

for i in range(0,6):
    angA = lawofsinsang(angA,angB,sideA,sideB)
    angA = lawofsinsang(angA,angC,sideA,sideC)
    angB = lawofsinsang(angB,angA,sideB,sideA)
    angB = lawofsinsang(angB,angC,sideB,sideC)
    angC = lawofsinsang(angC,angA,sideC,sideA)
    angC = lawofsinsang(angC,angB,sideC,sideB)

好的,所以我更新了代码,而不是域错误,math.asin什么也没做。新的回报如下:

math.asin(((math.sin(B)) * a) / b)

2 个答案:

答案 0 :(得分:0)

传递给asin的参数(反正弦)必须在区间[-1,1]中。如果不是,您会收到域错误。

答案 1 :(得分:0)

我发现了问题。 sin函数期望参数已经是弧度,而我一直在使用度。新代码如下:

def lawofsinsang(A,B,a,b):
    if not A and B:
        if a and b:
            return math.degrees(math.asin(((math.sin(math.radians(B))) * a) / b))
    else:
        return A