2012-01-01 25 views
2

math.cos()とmath.sin()関数を使用すると、私のpythonインタプリタがファンキーな動きをしています。例えば、私は私の電卓でこれを行う場合:異常な数学で不正確な結果がありますか?

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

しかし、私のpythonでこれを行う(両方の3.2および2.7)

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

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

これはなぜ起こるのでしょうか?

EDIT:PythonでRadianをどのように度に変更しますか?

+4

あなたの電卓はおそらく度(35度)を使用しています。それをラジャンを使うように変更すると、Pythonの数学モジュールと同じように動作します。 Mathemateciansはラジャンを好みます(サイクルの任意の1/3​​60)。 –

+2

この動作がファンキーであるとわかるように、私はあなたに+1します。数学は涼しいかもしれません:) –

+4

@ypercube:[ドキュメントに明示されています](http://docs.python.org/library/math.html#trigonometric-functions)、すべての三角法はラジアンです。 – Makoto

答えて

9

これは、あなたが
を使用していることに起因していると三角関数は、入力としてラジアン期待:
sin(radians)

sinための説明は次のとおりです。

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

Pythonでは、math.radians関数を使って度をラジアンに変換できます。


つまり、あなたの入力でこれを行う場合:それはあなたの電卓と同じ結果を与える

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

math.degrees 
math.radians 

あなたの例を使用する:次のPythonメソッドは度、またはその逆にラジアンに変換するために使用することができます

+0

さて、お返事ありがとう! +1 – Ripspace

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

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

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

奇妙な電卓...は度が、リターンを取りますラジアン。

+2

度またはラジアンで測定できるものから返される角度値はありません。 –

関連する問題