弧度法と度数法
$\pi\,[\mathrm{rad}]=180\,[{}^{\circ}]$ なので、$x$ ラジアン (radian) を度数法の角度に変換すると、
\[x\,[\mathrm{rad}]=\frac{180x}{\pi}\,[{}^{\circ}]\]
となります。逆に度数法で表された角度を ラジアン(弧度)に変換すると、
\[y\,[{}^{\circ}]=\frac{\pi y}{180}\,[\mathrm{rad}]\]
となります。math モジュールや NumPy にはラジアン(弧度)と度数法の角度を相互変換する関数がいくつか用意されています。
math.degrees()
math.degrees(x) は引数 x に渡した角度を度数法の角度に変換します。
# PYTHON_MATH_DEGREES # In[1] import math pi = math.pi # ラジアンからdegreeに変換 a = math.degrees(pi/6) b = math.degrees(pi/3) c = math.degrees(pi/2) print("pi/6[rad] : {}°".format(a)) print("pi/3[rad] : {}°".format(b)) print("pi/2[rad] : {}°".format(c)) # pi/6[rad] : 29.999999999999996° # pi/3[rad] : 59.99999999999999° # pi/2[rad] : 90.0°
math.radians()
math.radians(x) は引数 x に渡した角度をラジアンで表された角度に変換します。
# PYTHON_MATH_RADIANS # In[1] import math pi = math.pi # degreeからラジアンに変換 a = math.radians(30) b = math.radians(60) c = math.radians(90) print("30°: {}[rad]".format(a)) print("60°: {}[rad]".format(b)) print("90°: {}[rad]".format(c)) # 30°: 0.5235987755982988[rad] # 60°: 1.0471975511965976[rad] # 90°: 1.5707963267948966[rad]
numpy.rad2deg()
numpy.rad2deg(x) は引数 x に渡した角度を度数法の角度に変換します。
# NUMPY_RAD2DEG # In[1] import numpy as np pi = np.pi x = np.array([pi/4, pi/2, pi]) # ラジアンから度数法単位に変換 y = np.rad2deg(x) print(y) # [45. 90. 180.]
numpy.deg2rad()
numpy.deg2rad(x) は引数 x に渡した角度をラジアンの角度に変換します。
# NUMPY_DEG2RAD import numpy as np pi = np.pi x = np.array([45, 90, 180]) # degreeからradに変換 y = np.deg2rad(x) print(y) # [0.78539816 1.57079633 3.14159265]
mpmath.degrees()
mpmath.degrees() はラジアン単位の角度を度数法の角度に変換します。
# MPMATH_DEGREES # In[1] from mpmath import * mp.dps = 10 mp.pretty = True # pi/4を度数法の角度に変換 x = degrees(pi/4) print(x) # 45.0
mpmath.radians()
mpmath.radians() は受け取った角度をラジアンの角度に変換します。
# MPMATH_RADIANS # In[1] from mpmath import * mp.dps = 10 mp.pretty = True # 45°をラジアンで表された角度に変換 x = radians(45) print(x) 0.7853981634
コメント
【AI連載小説】科学とコードの交差点(28)「理系姉弟」
アパートのリビングで、開誠と瞳は夕食の支度をしながらくつろいでいました。瞳は天体物理学の研究に没頭している姿勢を持ちながら、開誠は数学や物理学の話題で盛り上がりつつ、普段の何気ない会話が交わされています。
瞳: ねえ、開誠、今日の夜ごはん、何にしようかな?
開誠: そうだね、今日は何が食べたい?
瞳: うーん、今日はパスタが食べたい気分かな。何か具材ある?
開誠: ああ、冷蔵庫にはトマトとベーコンがあるよ。それと、パセリも。
瞳: それなら、トマトベーコンパスタにしようか。シンプルだけど美味しいよね。
開誠: いいね、それにサラダでも作ろうか?
瞳: それはいいアイデア。野菜もしっかり摂らないと。
開誠は調理器具や材料を取り出しながら、瞳との日常の会話を楽しんでいました。
開誠: そういえば、研究の方はどう?
瞳: うーん、ちょっと宇宙の謎に挑戦中。新しいデータが手に入って、理論との整合性を取るのが難しいんだよね。
開誠: それは大変そうだけど、きっと解明できるよ。君ならきっと。
瞳: ありがとう。でも、数学の方が得意な君に助けてもらうこともあるかもしれないね。
開誠: お互いに頑張ろう。そして、トマトベーコンパスタで力をつけよう!
夕食の支度を進めながら、姉弟は日常の中で互いの近況や悩みを分かち合い、温かい雰囲気の中で食卓を囲んでいました。夕食の準備中、開誠は瞳に向かって興味津々な顔で質問しました。
開誠: ねえ、姉さん、ちょっと質問があるんだけど。
瞳: なんですか?
開誠: 最近、Pythonで数学の計算をするときに、math.radiansみたいな角度変換の関数をよく使うんだ。C++にも似たような関数ってある?
瞳: ああ、そうだね。C++でも角度の変換はできるよ。具体的には、cmathヘッダーのstd::radiansを使うことができるよ。
開誠: そうなんだ、それは便利だね。Pythonでは角度をラジアンに変換するのが簡単で、math.radiansって感じで。
瞳: C++でも同じような感じだよ。std::radiansは引数で指定した角度をラジアンに変換してくれる関数だよ。
開誠: いいね、それで角度の変換がスムーズにできそうだ。ありがとう、姉さん。
瞳: どういたしまして。ちなみに、PythonとC++では様々な違いがあるけど、基本的な数学関数は似たようなものが多いよ。
二人は料理の合間に、プログラミングや数学に関するちょっとした話題で楽しい時間を過ごしていました。