三角函数sin返回负数

时间:2011-02-04 17:27:34

标签: python c trigonometry

我用Python编写了这段代码

def hitsin(a):
    a = a*57.3
    return math.sin(a)

所以每当我把hitsin(x)x转换为弧度。当我把hitsin(90)的答案不是1或者任何数字接近1而是负数(它是-0.9971392129043587)时,我很困惑。我做错了吗?

p.s:我也尝试在C

中编写相同类型的代码
#include <stdio.h>
#include <math.h>

int main(){
    float degree;
    float result;

    degree = 90;
    degree = degree*57.3;
    result  = cos(result);

    printf("%f",result);

    return 1;
}

但答案是一样的。

真诚地,你的 吉瑞

4 个答案:

答案 0 :(得分:13)

你应该除以180/pi,而不是乘以。在Python中,您还可以使用math.radians()进行从度数到弧度的转换:

def hitsin(a):
    return math.sin(math.radians(a))
hitsin(90)
# 1.0

此外,我怀疑C代码提供与Python代码相同的结果,因为它使用cos()而不是sin()

答案 1 :(得分:6)

你需要除以57.3(或更好的近似值180 /π),而不是乘法。

答案 2 :(得分:1)

您发生了单位转换错误:

将度数转换为弧度:

radians = (2 * pi * degrees) / 360

给出了:

radians = degrees / 57.295... = degrees * 0.01745...

答案 3 :(得分:0)

因子57.29 ...从弧度转换为度数。但是你需要完全相反。

def degree_to_radian(x):
    from math import pi
    return x*pi/180

# pi/180 = 0.0174…

def degsin(x):
    from math import sin
    return sin(degree_to_radian(x))