ガウス積分の導出をわかりやすく解説

ガウス積分は、数学・物理学・統計学・工学のあらゆる分野で登場する最も重要な積分の一つです。特に正規分布の規格化定数の導出に不可欠であり、確率論や統計力学の基礎となっています。

本記事では、ガウス積分の値を極座標変換によって導出し、さらにその一般化についても解説します。

本記事の内容

  • ガウス積分の定義と結果
  • 極座標変換による導出
  • ガウス積分の一般化
  • 正規分布との関係
  • 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$ 次モーメントはパラメータ微分を用いて系統的に計算できる
  • 正規分布の規格化定数はガウス積分から直接導かれる