ガウス関数(Gaussian function)は、数学・物理学・統計学・信号処理など、あらゆる理工学分野で登場する最も基本的な関数の一つです。正規分布の確率密度関数の「形」を決める関数であり、フーリエ変換に対して自己相似性を持つという特筆すべき性質があります。
本記事では、ガウス関数の定義、性質、正規分布との違い、そしてフーリエ変換における性質まで解説します。
本記事の内容
- ガウス関数の定義
- 正規分布との関係
- ガウス関数の数学的性質
- フーリエ変換に対する自己相似性
- Pythonでの実装と可視化
ガウス関数の定義
ガウス関数は、次の形で表される関数です。
$$ f(x) = a \exp\left(-\frac{(x – \mu)^2}{2\sigma^2}\right) $$
ここで、
- $a$: 振幅(ピークの高さ)
- $\mu$: 中心位置(ピークの位置)
- $\sigma$: 標準偏差(広がりを制御するパラメータ)
最も基本的な形($a = 1$, $\mu = 0$, $\sigma = 1$)は、
$$ f(x) = e^{-x^2/2} $$
です。
正規分布との関係
正規分布の確率密度関数
正規分布 $\mathcal{N}(\mu, \sigma^2)$ の確率密度関数は、
$$ p(x) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x – \mu)^2}{2\sigma^2}\right) $$
です。
ガウス関数と正規分布の違い
ガウス関数と正規分布は形は同じですが、以下の違いがあります。
| ガウス関数 | 正規分布 | |
|---|---|---|
| 振幅 | 任意(パラメータ $a$) | $\frac{1}{\sqrt{2\pi\sigma^2}}$(規格化定数) |
| 積分値 | 任意 | 全区間で1 |
| 意味 | 数学的な関数 | 確率密度関数 |
正規分布は、全区間の積分が1になるように振幅が決められたガウス関数です。規格化条件 $\int_{-\infty}^{\infty} p(x) dx = 1$ から振幅 $a = 1/\sqrt{2\pi\sigma^2}$ が決まります。この導出にはガウス積分の結果を使います。
ガウス関数の性質
性質1: 最大値と半値幅
ガウス関数は $x = \mu$ で最大値 $a$ を取ります。
半値全幅(FWHM: Full Width at Half Maximum)は、ガウス関数が最大値の半分になる幅で、
$$ \text{FWHM} = 2\sqrt{2\ln 2} \, \sigma \approx 2.355 \sigma $$
$f(x) = a/2$ となる条件 $\exp(-(x-\mu)^2/(2\sigma^2)) = 1/2$ を解くと、$x – \mu = \pm\sigma\sqrt{2\ln 2}$ が得られます。
性質2: 微分
ガウス関数の微分は、ガウス関数とエルミート多項式の積になります。
$$ \frac{d}{dx} e^{-x^2/2} = -x \, e^{-x^2/2} $$
一般に $n$ 次微分は、
$$ \frac{d^n}{dx^n} e^{-x^2/2} = (-1)^n H_n(x) \, e^{-x^2/2} $$
ここで $H_n(x)$ はエルミート多項式です。
性質3: ガウス関数同士の積
2つのガウス関数の積は、再びガウス関数になります。
$$ \exp\left(-\frac{(x-\mu_1)^2}{2\sigma_1^2}\right) \cdot \exp\left(-\frac{(x-\mu_2)^2}{2\sigma_2^2}\right) = C \cdot \exp\left(-\frac{(x-\mu’)^2}{2\sigma’^2}\right) $$
ここで、
$$ \sigma’^2 = \frac{\sigma_1^2 \sigma_2^2}{\sigma_1^2 + \sigma_2^2}, \quad \mu’ = \frac{\sigma_2^2 \mu_1 + \sigma_1^2 \mu_2}{\sigma_1^2 + \sigma_2^2} $$
この性質は、ガウス過程回帰やカルマンフィルタの更新ステップで活用されます。
性質4: フーリエ変換の自己相似性
ガウス関数のフーリエ変換は、再びガウス関数になります。
$$ \mathcal{F}\left\{e^{-\alpha x^2}\right\} = \sqrt{\frac{\pi}{\alpha}} \, e^{-\pi^2 \omega^2 / \alpha} $$
これは非常に特筆すべき性質です。時間領域で幅が狭い($\alpha$ が大きい)ガウス関数は、周波数領域では幅が広くなり、不確定性原理を体現しています。
Pythonでの実装
ガウス関数の性質を可視化します。
import numpy as np
import matplotlib.pyplot as plt
def gaussian(x, mu=0, sigma=1, a=1):
"""ガウス関数"""
return a * np.exp(-(x - mu)**2 / (2 * sigma**2))
x = np.linspace(-5, 5, 500)
# パラメータの影響を可視化
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
# 左上: sigmaの影響
for sigma in [0.5, 1.0, 1.5, 2.0]:
axes[0, 0].plot(x, gaussian(x, sigma=sigma),
linewidth=2, label=f'$\\sigma={sigma}$')
axes[0, 0].set_title('Effect of $\\sigma$ (width)')
axes[0, 0].set_xlabel('x')
axes[0, 0].set_ylabel('f(x)')
axes[0, 0].legend()
axes[0, 0].grid(True, alpha=0.3)
# 右上: muの影響
for mu in [-2, -1, 0, 1, 2]:
axes[0, 1].plot(x, gaussian(x, mu=mu), linewidth=2, label=f'$\\mu={mu}$')
axes[0, 1].set_title('Effect of $\\mu$ (center)')
axes[0, 1].set_xlabel('x')
axes[0, 1].set_ylabel('f(x)')
axes[0, 1].legend()
axes[0, 1].grid(True, alpha=0.3)
# 左下: ガウス関数同士の積
g1 = gaussian(x, mu=-1, sigma=1)
g2 = gaussian(x, mu=1.5, sigma=0.8)
g_product = g1 * g2
# 正規化
g_product_norm = g_product / np.max(g_product)
axes[1, 0].plot(x, g1, 'b-', linewidth=2, label='$g_1(x): \\mu=-1, \\sigma=1$')
axes[1, 0].plot(x, g2, 'r-', linewidth=2, label='$g_2(x): \\mu=1.5, \\sigma=0.8$')
axes[1, 0].plot(x, g_product_norm * np.max(g_product), 'g-', linewidth=2,
label='$g_1 \\cdot g_2$ (product)')
axes[1, 0].set_title('Product of Two Gaussians')
axes[1, 0].set_xlabel('x')
axes[1, 0].set_ylabel('f(x)')
axes[1, 0].legend(fontsize=9)
axes[1, 0].grid(True, alpha=0.3)
# 右下: フーリエ変換の自己相似性
N = 1024
t = np.linspace(-10, 10, N)
dt = t[1] - t[0]
freq = np.fft.fftfreq(N, d=dt)
freq_shifted = np.fft.fftshift(freq)
alphas = [0.5, 1.0, 2.0, 4.0]
for alpha in alphas:
g = np.exp(-alpha * t**2)
G = np.fft.fftshift(np.fft.fft(g)) * dt
axes[1, 1].plot(freq_shifted, np.abs(G), linewidth=2,
label=f'$\\alpha={alpha}$')
axes[1, 1].set_title('Fourier Transform of Gaussian')
axes[1, 1].set_xlabel('Frequency')
axes[1, 1].set_ylabel('|$\\mathcal{F}\\{e^{-\\alpha x^2}\\}$|')
axes[1, 1].set_xlim(-3, 3)
axes[1, 1].legend()
axes[1, 1].grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
# FWHM の検証
sigma = 1.0
fwhm_theory = 2 * np.sqrt(2 * np.log(2)) * sigma
g_test = gaussian(x, sigma=sigma)
half_max = 0.5 * np.max(g_test)
above_half = x[g_test >= half_max]
fwhm_numerical = above_half[-1] - above_half[0]
print(f"FWHM (理論値): {fwhm_theory:.6f}")
print(f"FWHM (数値計算): {fwhm_numerical:.6f}")
print(f"FWHM / sigma: {fwhm_theory / sigma:.6f} (≈ 2.355)")
左上のグラフで $\sigma$ がガウス関数の広がりを制御し、右下のグラフでフーリエ変換後もガウス関数の形を保つ自己相似性が確認できます。$\alpha$ が大きい(時間領域で狭い)ほど、周波数領域では広がることが観測でき、不確定性原理を視覚的に理解できます。
まとめ
本記事では、ガウス関数の定義と性質について解説しました。
- ガウス関数は $f(x) = a\exp(-(x-\mu)^2/(2\sigma^2))$ で定義され、$\mu$, $\sigma$, $a$ の3つのパラメータで特徴づけられる
- 正規分布はガウス関数を全区間で積分値が1になるように規格化したものである
- ガウス関数同士の積は再びガウス関数になり、カルマンフィルタやガウス過程の理論的基盤となる
- フーリエ変換に対して自己相似性を持ち、時間と周波数の不確定性原理を体現する