$e$の関数系は、物理や数学、統計や機械学習で多数登場します。
まだ高校生であっても、高校数学でも$e$の関数系を書かせるような問題は多数あると思います。
今回は思い浮かんだままに、ネイピア数$e$のいろんな関数系を書いてみたいと思います。
matplotlibで描写
グラフはPythonとmatplotlibを用いて描写しています。全てのグラフにコードを記載しても良いのですが、情報量が多くなってしまうので、ライブラリのインポートやグラフの設定をするようなコードは下記に一度掲載し、それ以降は省略するようにします。自分の環境でもグラフを書いてみる人は、エラーが出た場合は適宜コードを修正して対応してください。
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(5,5), dpi=100)
ax.set_aspect('equal')
plt.axhline(0, linewidth=1.5, color="black")
plt.axvline(0, linewidth=1.5, color="black")
$y = e^x$ のグラフ
y = e^x
eを底とした指数関数です。xが大きくなるにつれて、無限大に発散しています。
$y = \frac{1}{e^x}$ のグラフ
y = \frac{1}{e^x}
$y = e^x$ のグラフに逆数をとったグラフです。よくみると、$y = e^x$ をy軸に対して反転させたような形式になっています。
y = \frac{1}{e^x} = e^{-x}
と式変形できるので、y軸対象となります。
$y = \frac{1}{1 + e^{-x}}$ のグラフ
\begin{equation} y = \frac{1}{1 + e^{-x}} \end{equation}
x軸は$- \inf \sim \inf$まで取ることができ、yは0~1の値を取る関数です。
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(5,3), dpi=100)
plt.axhline(0, linewidth=1.5, color="black")
plt.axvline(0, linewidth=1.5, color="black")
plt.axhline(1, linewidth=1.5, color="black", ls=":")
ax.set_xlim(-10, 10)
ax.set_ylim(-0.2, 1.2)
ax.set_xlabel("x")
ax.set_ylabel("y")
x = np.linspace(-10, 10, 1000)
y = 1 / (1 + np.e ** (-1 * x))
ax.plot(x, y, color="red", label=r"$y = \frac{1}{1 + e^{-x}}$")
ax.legend()
ax.grid()
$y = \frac{1}{1 + ae^{-x}}$ (シグモイド関数)のグラフ
\begin{equation} y = \frac{1}{1 + ae^{-x}} \end{equation}
(2)式は、シグモイド(Sigmoid)関数と呼ばれており、0~1の値を取る関数で、正の実数$a$によって、x軸方向を平行移動します。シグモイド関数は、機械学習や現在流行りのディープラーニングで非常によく用いられている関数です。
$a$の値を10倍するごとに、グラフがx方向に+1だけ平行移動するという面白い(興味深い)性質があります。
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(5,3), dpi=100)
plt.axhline(0, linewidth=1.5, color="black")
plt.axvline(0, linewidth=1.5, color="black")
plt.axhline(1, linewidth=1.5, color="black", ls=":")
ax.set_xlim(-10, 10)
ax.set_ylim(-0.2, 1.2)
ax.set_xlabel("x")
ax.set_ylabel("y")
params = [0.01, 0.1, 1, 10, 100, 1000,]
x = np.linspace(-10, 10, 1000)
for idx, a in enumerate(params):
y = 1 / (1 + a * np.e ** (-1 * x))
ax.plot(x, y, label=f"a = {a}")
ax.legend()
ax.grid()
$y = e^{- x^2}$ (正規分布)のグラフ
\begin{equation} y = e^{- x^2} \end{equation}
(3)式は、確率統計の分野で頻繁に登場する正規分布の数式です。正確な正規分布の式は、他に定数の項がありますが、基本的には(3)式と同じ形をしています。
y軸対象で、$x=0$近傍は値が高く、山のようになっていることがわかります。
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(5,3), dpi=100)
plt.axhline(0, linewidth=1.5, color="black")
plt.axvline(0, linewidth=1.5, color="black")
ax.set_xlim(-10, 10)
ax.set_ylim(-0.2, 1.2)
ax.set_xlabel("x")
ax.set_ylabel("y")
x = np.linspace(-10, 10, 1000)
y = np.e ** (- 1 * x ** 2)
ax.plot(x, y, color="red", label=r"$y = e^{- x^2}$")
ax.legend()
ax.grid()