ガウス積分は、数学・物理学・統計学・工学のあらゆる分野で登場する最も重要な積分の一つです。特に正規分布の規格化定数の導出に不可欠であり、確率論や統計力学の基礎となっています。
本記事では、ガウス積分の値を極座標変換によって導出し、さらにその一般化についても解説します。
本記事の内容
- ガウス積分の定義と結果
- 極座標変換による導出
- ガウス積分の一般化
- 正規分布との関係
- Pythonでの数値検証
ガウス積分とは
ガウス積分は、次の定積分です。
$$ I = \int_{-\infty}^{\infty} e^{-x^2} \, dx = \sqrt{\pi} $$
この結果は一見驚くべきものです。被積分関数 $e^{-x^2}$ の不定積分は初等関数では表せないにもかかわらず、$-\infty$ から $\infty$ まで積分すると $\sqrt{\pi}$ というきれいな値になります。
極座標変換による導出
ガウス積分の導出で最も有名な方法は、積分の2乗を考えて2次元の極座標変換を利用する手法です。
ステップ1: 積分の2乗を考える
$I^2$ を計算します。$I$ は $x$ の積分なので、$I^2$ では別の変数 $y$ を導入します。
$$ I^2 = \left(\int_{-\infty}^{\infty} e^{-x^2} \, dx\right) \left(\int_{-\infty}^{\infty} e^{-y^2} \, dy\right) $$
これは2重積分として書けます。
$$ I^2 = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} e^{-(x^2 + y^2)} \, dx \, dy $$
ステップ2: 極座標に変換する
$x = r \cos\theta$, $y = r \sin\theta$ と置くと、$x^2 + y^2 = r^2$ であり、ヤコビアンは $r$ です。
$$ dx \, dy = r \, dr \, d\theta $$
積分範囲は全平面なので、$r: 0 \to \infty$, $\theta: 0 \to 2\pi$ です。
$$ I^2 = \int_0^{2\pi} \int_0^{\infty} e^{-r^2} \, r \, dr \, d\theta $$
ステップ3: $r$ に関する積分を計算する
$\theta$ に関する積分は定数 $2\pi$ を与えるので、
$$ I^2 = 2\pi \int_0^{\infty} r \, e^{-r^2} \, dr $$
$u = r^2$ と置換すると、$du = 2r \, dr$ なので、
$$ \int_0^{\infty} r \, e^{-r^2} \, dr = \frac{1}{2} \int_0^{\infty} e^{-u} \, du = \frac{1}{2} \left[-e^{-u}\right]_0^{\infty} = \frac{1}{2} $$
ステップ4: 結果を得る
$$ I^2 = 2\pi \cdot \frac{1}{2} = \pi $$
$I > 0$ なので、
$$ I = \int_{-\infty}^{\infty} e^{-x^2} \, dx = \sqrt{\pi} $$
ガウス積分の一般化
パラメータ付きガウス積分
$a > 0$ として、次の一般化を考えます。
$$ \int_{-\infty}^{\infty} e^{-ax^2} \, dx $$
$t = \sqrt{a} \, x$ と置換すると、$dx = dt / \sqrt{a}$ なので、
$$ \int_{-\infty}^{\infty} e^{-ax^2} \, dx = \frac{1}{\sqrt{a}} \int_{-\infty}^{\infty} e^{-t^2} \, dt = \sqrt{\frac{\pi}{a}} $$
$n$ 次モーメント
$n$ が偶数のとき、
$$ \int_{-\infty}^{\infty} x^n e^{-ax^2} \, dx = \frac{(n-1)!!}{(2a)^{n/2}} \sqrt{\frac{\pi}{a}} $$
ここで $(n-1)!! = (n-1)(n-3) \cdots 3 \cdot 1$ は二重階乗です。
特に $n = 2$ のとき、
$$ \int_{-\infty}^{\infty} x^2 e^{-ax^2} \, dx = \frac{1}{2a} \sqrt{\frac{\pi}{a}} $$
この結果は、$a$ についてパラメータ微分することでも導出できます。
$$ \int_{-\infty}^{\infty} x^2 e^{-ax^2} \, dx = -\frac{\partial}{\partial a} \int_{-\infty}^{\infty} e^{-ax^2} \, dx = -\frac{\partial}{\partial a} \sqrt{\frac{\pi}{a}} = \frac{1}{2} \sqrt{\frac{\pi}{a^3}} $$
正規分布との関係
正規分布の確率密度関数は、
$$ p(x) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x – \mu)^2}{2\sigma^2}\right) $$
です。確率密度関数は全区間で積分すると1にならなければなりません。
$$ \int_{-\infty}^{\infty} p(x) \, dx = \frac{1}{\sqrt{2\pi\sigma^2}} \int_{-\infty}^{\infty} \exp\left(-\frac{(x – \mu)^2}{2\sigma^2}\right) dx $$
$t = (x – \mu) / (\sqrt{2} \sigma)$ と置換すると、
$$ = \frac{1}{\sqrt{2\pi\sigma^2}} \cdot \sqrt{2} \sigma \int_{-\infty}^{\infty} e^{-t^2} \, dt = \frac{\sqrt{2}\sigma}{\sqrt{2\pi\sigma^2}} \cdot \sqrt{\pi} = 1 $$
このように、正規分布の規格化定数はガウス積分の結果から直接導かれます。
Pythonでの数値検証
ガウス積分の値を数値的に検証し、一般化ガウス積分も確認します。
import numpy as np
import matplotlib.pyplot as plt
from scipy import integrate
# 基本のガウス積分の数値検証
result, error = integrate.quad(lambda x: np.exp(-x**2), -np.inf, np.inf)
print(f"数値計算: {result:.10f}")
print(f"sqrt(pi): {np.sqrt(np.pi):.10f}")
print(f"誤差: {abs(result - np.sqrt(np.pi)):.2e}")
# パラメータ付きガウス積分の検証
print("\n--- パラメータ付きガウス積分 ---")
for a in [0.5, 1.0, 2.0, 5.0]:
numerical, _ = integrate.quad(lambda x, a=a: np.exp(-a * x**2), -np.inf, np.inf)
analytical = np.sqrt(np.pi / a)
print(f"a={a:.1f}: 数値={numerical:.8f}, 理論={analytical:.8f}, 差={abs(numerical - analytical):.2e}")
# 2次モーメントの検証
print("\n--- 2次モーメント ---")
for a in [0.5, 1.0, 2.0]:
numerical, _ = integrate.quad(lambda x, a=a: x**2 * np.exp(-a * x**2), -np.inf, np.inf)
analytical = 0.5 * np.sqrt(np.pi / a**3)
print(f"a={a:.1f}: 数値={numerical:.8f}, 理論={analytical:.8f}, 差={abs(numerical - analytical):.2e}")
# 可視化
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# 左: ガウス関数と面積
x = np.linspace(-4, 4, 500)
y = np.exp(-x**2)
axes[0].plot(x, y, 'b-', linewidth=2, label='$e^{-x^2}$')
axes[0].fill_between(x, y, alpha=0.3, color='blue')
axes[0].axhline(y=0, color='k', linewidth=0.5)
axes[0].set_xlabel('x')
axes[0].set_ylabel('$e^{-x^2}$')
axes[0].set_title(f'Gaussian Integral = $\\sqrt{{\\pi}}$ = {np.sqrt(np.pi):.4f}')
axes[0].legend(fontsize=12)
axes[0].grid(True, alpha=0.3)
# 右: パラメータ a による変化
a_values = [0.25, 0.5, 1.0, 2.0, 4.0]
for a in a_values:
y = np.exp(-a * x**2)
area = np.sqrt(np.pi / a)
axes[1].plot(x, y, linewidth=2, label=f'$a={a}$, area={area:.3f}')
axes[1].set_xlabel('x')
axes[1].set_ylabel('$e^{-ax^2}$')
axes[1].set_title('Parameterized Gaussian: $\\int e^{-ax^2}dx = \\sqrt{\\pi/a}$')
axes[1].legend(fontsize=9)
axes[1].grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
数値計算の結果が理論値 $\sqrt{\pi}$ と一致することが確認できます。
まとめ
本記事では、ガウス積分の導出と一般化について解説しました。
- ガウス積分 $\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}$ は、積分の2乗を考えて極座標変換することで導出できる
- パラメータ付きガウス積分 $\int_{-\infty}^{\infty} e^{-ax^2} dx = \sqrt{\pi/a}$ は変数置換で導出できる
- $n$ 次モーメントはパラメータ微分を用いて系統的に計算できる
- 正規分布の規格化定数はガウス積分から直接導かれる