2016-08-21 8 views
2

프로그래밍에 익숙하지 않아 무엇이 잘못되었는지 알지 못합니다. atan2는 두 개의 인수를 필요로하는 오류의 원인은"atan2()는 정확히 2 개의 인수 (주어진 1 개)를 사용합니다."

from math import atan2, pi 
x = int(input("value of x")) 
y = int(input("value of y")) 
r = (x**2 + y**2) ** 0.5 
ang = atan2(y/x) 
print("Hypotenuse is", r, "angle is", ang) 
+1

'atan2'를 호출하면 2 개의 인수를 전달해야합니다. 'y/x'는 1입니다. argument –

+0

또한,'atan2 ('. – lit

답변

2

도와주세요. 관찰 : x 제로하지만 atan2(y, x)가 잘 작동하는 것 인 경우

>>> from math import atan, atan2 
>>> atan(2) 
1.1071487177940904 
>>> atan2(4, 2) 
1.1071487177940904 

atan(y/x) 문제가 해결되지 않습니다

파이썬에서,이 2 개 아크 탄젠트 함수는
>>> atan(4/0) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ZeroDivisionError: division by zero 
>>> atan2(4, 0) 
1.5707963267948966 
4

: atan 단지의 역입니다 tan; 그러나 atan2은 2 개의 인수를 취합니다. atan2에 대한 이론적 근거가 있다는 것입니다 당신이

ang = atan(y/x) 

을 작성할 수 있습니다, 또는

ang = atan2(y, x) 

: 당신이 모두 catheti을 알고 있기 때문에 귀하의 경우에는, 당신은뿐만 아니라 2 인자 기능 atan2를 사용할 수 있습니다 x이 0 인 경우에도 올바르게 작동합니다. atan(y/x) 인 경우 ZeroDivisionError: float division by zero이 발생합니다.

또한 atan은 사이 각을 줄 수 -π/2 ... + π/2, atan2는 가치가 떨어지는 4 사분면 알 수있다 따라서 두 yx과의 표시를 알고있는 반면; 그 값의 범위는 -π에서 + π까지입니다. 물론 음의 너비 또는 높이를 가진 삼각형을 가지지는 않을 것입니다 ...