三角関数は使っていますでしょうか。中学・高校数学だけでなく、フーリエ解析や信号処理といった観点で、大学でも工学分野や数学で頻繁に登場する三角関数ですが、今回は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で描写する
先ほどの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="--")
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)が成り立つことを確認することができました。