Python.org数学ライブラリでは、cos/sin/tan/acos/asin/atanでmath.cos(x)
しか見つかりませんでした。これは、回答をラジアンで返します。度で答えを得るにはどうすればよいですか?
私のコードは次のとおりです。
import math
x = math.cos(1)
y = x * 180 / math.pi
print y
30.9570417874
私の電卓は、度に、私に与えます:
cos(1)
0.9998476...
Pythonには、math
パッケージに2つの関数が含まれています。 radians
は度をラジアンに変換し、degrees
はラジアンを度に変換します。
計算機の出力を一致させるには、次のものが必要です。
>>> math.cos(math.radians(1))
0.9998476951563913
すべてのトリガー関数は、角度と三角形の2つの辺の比率の間で変換することに注意してください。 cos、sin、およびtanは入力としてラジアン単位の角度を取り、比率を返します。 acos、asin、およびatanは入力として比率を取り、角度をラジアンで返します。角度のみを変換し、比率は変換しません。
ラジアンとはどのような問題を解決しますか?:
ラジアンと度は、人々が方向の正確な変化を表現して伝えるのに役立つ2つの別個の測定単位です。ウィキペディアには、1ラジアンが度数に対してどのように定義されているかについてのインフォグラフィックでいくつかの素晴らしい直観があります。
https://en.wikipedia.org/wiki/Radian
ラジアンから度を計算するライブラリを使用したPythonの例:
>>> import math
>>> math.degrees(0) #0 radians == 0 degrees
0.0
>>> math.degrees(math.pi/2) #pi/2 radians is 90 degrees
90.0
>>> math.degrees(math.pi) #pi radians is 180 degrees
180.0
>>> math.degrees(math.pi+(math.pi/2)) #pi+pi/2 radians is 270 degrees
270.0
>>> math.degrees(math.pi+math.pi) #2*pi radians is 360 degrees
360.0
度からラジアンを計算するライブラリを使用したPythonの例:
>>> import math
>>> math.radians(0) #0 degrees == 0 radians
0.0
>>> math.radians(90) #90 degrees is pi/2 radians
1.5707963267948966
>>> math.radians(180) #180 degrees is pi radians
3.141592653589793
>>> math.radians(270) #270 degrees is pi+(pi/2) radians
4.71238898038469
>>> math.radians(360) #360 degrees is 2*pi radians
6.283185307179586
ソース: https://docs.python.org/3/library/math.html#angular-conversion
数学表記:
独自の学位/ラジアンコンバーターを使用する場合は、エッジケースを処理する独自のコードを作成する必要があります。
ここでの間違いは簡単で、1999年の火星オービターの開発者を傷つけるのと同じように傷つきます。
そのオービターをクラッシュさせ、独自のラジアンを度に転がします:
入力として無効なラジアンがガベージ出力を返します。
>>> 0 * 180.0 / math.pi #0 radians is 0 degrees
0.0
>>> (math.pi/2) * 180.0 / math.pi #pi/2 radians is 90 degrees
90.0
>>> (math.pi) * 180.0 / math.pi #pi radians is 180 degrees
180.0
>>> (math.pi+(math.pi/2)) * 180.0 / math.pi #pi+(pi/2) radians is 270 degrees
270.0
>>> (2 * math.pi) * 180.0 / math.pi #2*pi radians is 360 degrees
360.0
ラジアン度:
>>> 0 * math.pi / 180.0 #0 degrees in radians
0.0
>>> 90 * math.pi / 180.0 #90 degrees in radians
1.5707963267948966
>>> 180 * math.pi / 180.0 #180 degrees in radians
3.141592653589793
>>> 270 * math.pi / 180.0 #270 degrees in radians
4.71238898038469
>>> 360 * math.pi / 180.0 #360 degrees in radians
6.283185307179586
度とラジアンで複数の回転を表現する
単一回転の有効なラジアン値は0〜2 * piです。単一の回転角度の値は0〜360です。ただし、複数の回転を表現する場合、有効なラジアンと角度の値は0〜無限です。
>>> import math
>>> math.radians(360) #one complete rotation
6.283185307179586
>>> math.radians(360+360) #two rotations
12.566370614359172
>>> math.degrees(12.566370614359172) #math.degrees and math.radians preserve the
720.0 #number of rotations
複数回転の折りたたみ:
1つの回転の値に対して改造することにより、複数の角度/ラジアンの回転を単一の回転に折りたたむことができます。 360でモジュレーションする度数の場合、ラジアンでは2 * piでモジュラスします。
>>> import math
>>> math.radians(720+90) #2 whole rotations plus 90 is 14.14 radians
14.137166941154069
>>> math.radians((720+90)%360) #14.1 radians brings you to
1.5707963267948966 #the end point as 1.57 radians.
>>> math.degrees((2*math.pi)+(math.pi/2)) #one rotation plus a quarter
450.0 #rotation is 450 degrees.
>>> math.degrees(((2*math.pi)+(math.pi/2))%(2*math.pi)) #one rotation plus a quarter
90.0 #rotation brings you to 90.
Protip
カーンアカデミーには、三角法とangular数学に関する直観を固める優れたコンテンツがいくつかあります。 https://www.khanacademy.org/math/algebra2/trig-functions/intro-to-radians-alg2/v/introduction-to-radians
次を使用して、ラジアン結果を次数に変換することができます。
math.degrees および必要な小数点以下の桁数に適切に丸める
例えば
>>> round(math.degrees(math.asin(0.5)),2)
30.0
>>>
ラジアンは、numpyを使用して度に変換することもできます
print(np.rad2deg(1))
57.29577951308232
四捨五入する必要がある場合(下の10進数の後に6桁でした)、
print(np.round(np.rad2deg(1), 6)
57.29578
また、ラジアンではなく度で引数を取り、返す独自の関数を定義することも好きです。私の名前が気に入らない最も純粋な大文字使用は確かですが、カスタム関数には大文字の最初の文字を使用しています。定義とテストコードは次のとおりです。
#Definitions for trig functions using degrees.
def Cos(a):
return cos(radians(a))
def Sin(a):
return sin(radians(a))
def Tan(a):
return tan(radians(a))
def ArcTan(a):
return degrees(arctan(a))
def ArcSin(a):
return degrees(arcsin(a))
def ArcCos(a):
return degrees(arccos(a))
#Testing Code
print(Cos(90))
print(Sin(90))
print(Tan(45))
print(ArcTan(1))
print(ArcSin(1))
print(ArcCos(0))
数学(またはnumpy)を名前空間にインポートしたことに注意してください
from math import *
また、私の関数は定義された名前空間にあることに注意してください。例えば、
math.Cos(45)
存在しない。
-fix-ラジアンから度に変更したいので、実際にはrad * deg * math.pi/180であり、deg * 180/math.piではありません
import math
x=1 # in deg
x = x*math.pi/180 # convert to rad
y = math.cos(x) # calculate in rad
print y
1行でこのようにすることができます
y=math.cos(1*math.pi/180)