2011-02-04 6 views
3

Я сделал этот код в PythonТригонометрия грех вернуть отрицательный

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

поэтому, когда я положил hitsin (х) х преобразуются в радианы. Я путаю, когда я ставил hitin (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; 
} 

Но ответ такой же.

Искренне Ваш Гиря

ответ

12

Вы должны делить на 180/pi, а не размножаться. В Python, вы можете также использовать math.radians() для перехода от степени в радианы:

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

Кроме того, я сомневаюсь, что код C дает тот же результат, как код Python, поскольку он использует cos() вместо sin().

+0

Ваш ответ имеет ту же метку времени, что и моя, - мертвая жара. –

+7

+1 для 'math.radians()' и не повторно изобретать колесо ... – thkala

+0

'math.radians' имеет довольно запутанное имя (почему бы не' degtorad' или что-то подобное, что говорит * что * -to-radians ?!), поэтому я бы на самом деле нашел, что переводчик стал гораздо более удобочитаемым и самодокументирующимся. –

6

Вам нужно разделить на 57,3 (или какое-то лучшее приближение к 180/П), не размножается.

+0

О, боже, это действительно помогает мне, так глупо от меня: D thx много! – giripp

+0

+1 для юникода. – ulidtko

1

Вы сделали ошибку преобразования блок:

Чтобы преобразовать градусы в радианы:

radians = (2 * pi * degrees)/360 

Что дает:

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

или 'math.radians (degrees)', который более явный. – eumiro

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)) 
+0

Что относительно математики? –

Смежные вопросы