【Python】三角関数(sin, cos)のグラフを可視化する

Posted: , Category: Python , 可視化

三角関数は使っていますでしょうか。中学・高校数学だけでなく、フーリエ解析や信号処理といった観点で、大学でも工学分野や数学で頻繁に登場する三角関数ですが、今回はPythonを用いてこれらを可視化してみましょう。

中学、高校の授業では手書きで何度も書かされたこの関数ですが、Pythonを用いるととても簡単に描くことができます。今回は、Pythonを用いて三角関数を描写します。

本記事の内容
  • Pythonを用いて三角関数のグラフ(sin, cos)を描写する
  • 三角関数のsin と cosの関係性をグラフで確認する

Pythonで三角関数(sin, cos)のグラフをかく

三角関数のグラフをPythonで描いていきます。Pythonを用いれば、非常に簡単にsinやcosといったグラフを書くことができます。また、位相やy方向にずらしたグラフも簡単に描くことができます。

依存ライブラリのインポート

今回、Pythonを用いて三角関数のグラフを可視化していきます。必要なライブラリは、数値計算用のライブラリであるnumpyと、グラフ描写用のライブラリであるmatplotlibを用います。

まず最初に、これらのライブラリをインポートします。

import numpy as np
import matplotlib.pyplot as plt

sin関数のグラフを描く

ライブラリのインポートができたら、sin関数のグラフを描いてみましょう。

matplotlibを用いてPythonのグラフを描く場合は、次のような順番で行います。

① 横軸の範囲と目盛を決める
② 縦軸のグラフを定義する
③ matplotlibで描写する

今回のように三角関数のグラフを書くだけでなく、あらゆる関数を描写する際に、このような流れで関数をグラフ化することができます。

実際にsin関数を描いてみましょう。今回は、横軸を0~100の範囲で指定しています。

fig, ax = plt.subplots(figsize=(10,2), dpi=100) # ステップ0. グラフの描写領域を決める 

x = np.linspace(0, 100, 1000) # ステップ1. 横軸の範囲と目盛を決める
y = np.sin(x) # ステップ2. 縦軸のグラフを定義する
ax.plot(x, y, color="red") # ステップ3. matplotlibで描写する

このような、sinカーブを描くことができます。

cos関数のグラフを書く

続いて、cos関数のグラフを可視化してみましょう。

こちらも、sin関数と同様にグラフを描写することができます。

fig, ax = plt.subplots(figsize=(10,2), dpi=100) # ステップ0. グラフの描写領域を決める 

x = np.linspace(0, 100, 1000) # ステップ1. 横軸の範囲と目盛を決める
y = np.cos(x) # ステップ2. 縦軸のグラフを定義する
ax.plot(x, y, color="red") # ステップ3. matplotlibで描写する
サインカーブと同じように、これらのcos関数のグラフも書くことができました。

先ほどのsin関数とcos関数を同時にプロットすると、このようになります。

sinとcosの間には、このような関係が成り立ちます。
\begin{equation}
\sin (x + \frac{\pi}{2}) = cos(x)
\end{equation}

これはどういうことかというと、sin(x)の関数を$- \frac{\pi}{2}$だけずらした場合には、cos(x)と重なるということを示しています。これを、図示して確かめてみましょう。

三角関数のsin と cosの関係性をグラフで確認する

(1)の関係式を、グラフかして確かめてみます。

通常のsin(x)を赤色の実線、位相ずらした$\sin (x + \frac{\pi}{2})$を赤色の点線で描いてみます。

fig, ax = plt.subplots(figsize=(10,2), dpi=100)

x = np.linspace(0, 100, 1000)
sin = np.sin(x)
m_sin = np.sin(x + np.pi * 0.5 )

ax.plot(x, sin, color="red") 
ax.plot(x, m_sin, color="red", linestyle="--") 
続いて、このグラフのcos(x)を緑色の実線で描きます。
fig, ax = plt.subplots(figsize=(10,2), dpi=100)

x = np.linspace(0, 100, 1000)
sin = np.sin(x)
m_sin = np.sin(x + np.pi * 0.5 )
cos = np.cos(x)

ax.plot(x, sin, color="red") 
ax.plot(x, m_sin, color="red", linestyle="--") 
ax.plot(x, cos, color="green") 

赤色の点線$\sin (x + \frac{\pi}{2})$と緑色の実線$\cos(x)$が重なってくれました。

よって、ちゃんと(1)が成り立つことを確認することができました。

【広告】
統計学的にあなたの悩みを解決します。
仕事やプライベートでお悩みの方は、ベテラン占い師 蓮若菜にご相談ください。

関連タグ:
機械学習と情報技術