2
votes

My python interpreter is acting funky when I use the math.cos() and math.sin() function. For example, if I do this on my calculator:

cos(35)*15+9 = 21.28728066
sin(35)*15+9 = 17.60364655

But when I do this on python (both 3.2 and 2.7)

>>> import math
>>> math.cos(35)*15+9
-4.5553830763726015

>>> import math
>>> math.sin(35)*15+9
2.577259957557734

Why does this happen?

EDIT: How do you change the Radian in Python to degrees, just in case?

3
Your calculator is probably using degrees (35 degrees). Change it to use radiants and it will behave the same as the Python math module. Mathematecians prefer radiants and not the (arbitrary 1/360 of the cycle) degree. - ypercubeᵀᴹ
I'll give you +1 though as you find this behaviour funky. Math can be cool :) - ypercubeᵀᴹ
@ypercube: It's explicit in the documentation that all of the trigonometric methods are in radians, though. - Makoto
@Makoto: did I say otherwise? - ypercubeᵀᴹ
Real mathematicians will laugh derisively at those who use degrees in trigonometry :-) - paxdiablo

3 Answers

9
votes

This is being caused by the fact that you are using degrees
and the trigonometric functions expect radians as input:
sin(radians)

The description for sin is:

sin(x)
    Return the sine of x (measured in radians).

In Python, you can convert degrees to radians with the math.radians function.


So if you do this with your input:

>>> math.sin(math.radians(35)) * 15 + 9
17.60364654526569

it gives the same result as your calculator.

1
votes

The following Python methods can be used to convert radians to degrees or vice versa:

math.degrees
math.radians

Using your example:

>>> from math import cos, sin, radians
>>> sin(radians(35)) * 15 + 9
17.60364654526569
>>> cos(radians(35)) * 15 + 9
21.28728066433488

Weird calculator... takes degrees but returns radians.

0
votes
cos(35)[degree] = 0.819 * 15 + 9 = 21.285  <-- Your calculator

sin(35)[radian] = -0.428 * 15 + 9 = 2.577  <-- Python