置換積分法のコツと実践をわかりやすく解説

置換積分法は、積分を計算する最も基本的かつ強力なテクニックのひとつです。複雑な被積分関数を、変数変換によって計算しやすい形に変形する手法です。本質的には合成関数の微分(連鎖律)の「逆操作」です。

置換積分は、三角関数の積分、無理関数の積分、ガウス積分の計算など、多くの重要な積分に不可欠です。本記事では、置換積分の原理から証明、そして典型的なパターンと具体例を丁寧に解説します。

本記事の内容

  • 置換積分の原理と証明
  • 典型的な置換パターン
  • 三角関数置換・双曲線関数置換
  • 具体例の詳細な計算
  • Pythonでの数値検証

前提知識

置換積分とは

直感的な理解

イメージとしては、積分の「着せ替え」 です。難しい衣装を脱がせて、計算しやすい服に着替えさせてから積分を実行します。

たとえば $\int 2x \cos(x^2) \, dx$ は直接計算が難しいですが、$t = x^2$ と置換すると $dt = 2x \, dx$ なので $\int \cos t \, dt = \sin t + C = \sin(x^2) + C$ と簡単に計算できます。

定理(不定積分の置換積分法)

$g(x)$ が微分可能で、$F'(t) = f(t)$ ならば:

$$ \begin{equation} \int f(g(x)) g'(x) \, dx = F(g(x)) + C \end{equation} $$

証明

$F(g(x))$ を $x$ で微分すると、連鎖律より:

$$ \frac{d}{dx} F(g(x)) = F'(g(x)) \cdot g'(x) = f(g(x)) \cdot g'(x) $$

よって $F(g(x))$ は $f(g(x))g'(x)$ の原始関数です。$\square$

定積分の置換積分法

$$ \begin{equation} \int_a^b f(g(x)) g'(x) \, dx = \int_{g(a)}^{g(b)} f(t) \, dt \end{equation} $$

注意: 定積分では 積分区間も変換する 必要があります。

実践的な手順

  1. 適切な置換 $t = g(x)$ を選ぶ
  2. $dt = g'(x) \, dx$ を計算
  3. 被積分関数をすべて $t$ で表す
  4. $t$ で積分を実行
  5. 結果を $x$ に戻す(不定積分の場合)

置換の選び方のコツ

  • 合成関数の「内側」を $t$ とおく: $\int f(g(x))g'(x) \, dx$ の $g(x)$ を $t$ に
  • $dt$ が被積分関数に含まれている(または近い形がある) ことを確認
  • うまくいかなければ別の置換を試す

典型的な置換パターン

パターン1: $t = g(x)$(内側の関数を置換)

$$ \int \sin^3 x \cos x \, dx $$

$t = \sin x$, $dt = \cos x \, dx$:

$$ = \int t^3 \, dt = \frac{t^4}{4} + C = \frac{\sin^4 x}{4} + C $$

パターン2: 三角関数置換

$\sqrt{a^2 – x^2}$ が現れたら $x = a\sin\theta$:

$$ \int \frac{dx}{\sqrt{a^2 – x^2}} $$

$x = a\sin\theta$, $dx = a\cos\theta \, d\theta$:

$$ \begin{align} &= \int \frac{a\cos\theta \, d\theta}{\sqrt{a^2 – a^2\sin^2\theta}} = \int \frac{a\cos\theta \, d\theta}{a\cos\theta} \\ &= \int d\theta = \theta + C = \arcsin\frac{x}{a} + C \end{align} $$

パターン3: 三角関数置換の3タイプ

被積分関数に含まれる式 置換 理由
$\sqrt{a^2 – x^2}$ $x = a\sin\theta$ $1 – \sin^2\theta = \cos^2\theta$
$\sqrt{a^2 + x^2}$ $x = a\tan\theta$ $1 + \tan^2\theta = \sec^2\theta$
$\sqrt{x^2 – a^2}$ $x = a\sec\theta$ $\sec^2\theta – 1 = \tan^2\theta$

パターン4: $t = \tan(x/2)$ の万能置換

三角関数の有理式の積分に使えます。$t = \tan(x/2)$ とおくと:

$$ \sin x = \frac{2t}{1+t^2}, \quad \cos x = \frac{1-t^2}{1+t^2}, \quad dx = \frac{2}{1+t^2} dt $$

具体例

例1: $\int x\sqrt{1-x^2} \, dx$

$t = 1 – x^2$, $dt = -2x \, dx$ より $x \, dx = -\frac{1}{2} dt$:

$$ = -\frac{1}{2} \int \sqrt{t} \, dt = -\frac{1}{2} \cdot \frac{2}{3} t^{3/2} + C = -\frac{1}{3}(1-x^2)^{3/2} + C $$

例2: $\int \frac{x}{1+x^4} \, dx$

$t = x^2$, $dt = 2x \, dx$:

$$ = \frac{1}{2} \int \frac{dt}{1+t^2} = \frac{1}{2} \arctan t + C = \frac{1}{2}\arctan(x^2) + C $$

例3: $\int_0^1 \sqrt{1-x^2} \, dx$(四分円の面積)

$x = \sin\theta$, $dx = \cos\theta \, d\theta$。$x: 0 \to 1$ のとき $\theta: 0 \to \pi/2$:

$$ \begin{align} &= \int_0^{\pi/2} \sqrt{1-\sin^2\theta} \cos\theta \, d\theta = \int_0^{\pi/2} \cos^2\theta \, d\theta \\ &= \int_0^{\pi/2} \frac{1+\cos 2\theta}{2} \, d\theta = \frac{1}{2}\left[\theta + \frac{\sin 2\theta}{2}\right]_0^{\pi/2} \\ &= \frac{1}{2} \cdot \frac{\pi}{2} = \frac{\pi}{4} \end{align} $$

これは半径1の四分円の面積です。

例4: $\int \frac{dx}{x^2\sqrt{x^2+4}}$

$x = 2\tan\theta$, $dx = 2\sec^2\theta \, d\theta$, $\sqrt{x^2+4} = 2\sec\theta$:

$$ \begin{align} &= \int \frac{2\sec^2\theta \, d\theta}{4\tan^2\theta \cdot 2\sec\theta} = \frac{1}{4} \int \frac{\sec\theta}{\tan^2\theta} d\theta \\ &= \frac{1}{4} \int \frac{\cos\theta}{\sin^2\theta} d\theta = \frac{1}{4} \int \frac{d(\sin\theta)}{\sin^2\theta} \\ &= -\frac{1}{4\sin\theta} + C = -\frac{\sqrt{x^2+4}}{4x} + C \end{align} $$

Pythonでの実装

数値積分による検証

import numpy as np
import matplotlib.pyplot as plt
from scipy import integrate
import sympy as sp

# sympy で解析的に積分を計算
x = sp.Symbol('x')

integrals = [
    (sp.sin(x)**3 * sp.cos(x), r"$\sin^3 x \cos x$"),
    (x * sp.sqrt(1 - x**2), r"$x\sqrt{1-x^2}$"),
    (x / (1 + x**4), r"$\frac{x}{1+x^4}$"),
    (1 / sp.sqrt(4 - x**2), r"$\frac{1}{\sqrt{4-x^2}}$"),
]

print("置換積分の解析解(sympy):")
print("=" * 50)
for expr, name in integrals:
    result = sp.integrate(expr, x)
    print(f"∫ {name} dx = {result}")

# 定積分の検証
print("\n定積分の検証:")
print("=" * 50)

# ∫_0^1 sqrt(1-x^2) dx = π/4
val, err = integrate.quad(lambda x: np.sqrt(1 - x**2), 0, 1)
print(f"∫_0^1 √(1-x²) dx = {val:.10f}")
print(f"π/4 = {np.pi/4:.10f}")
print(f"誤差: {abs(val - np.pi/4):.2e}")

置換の効果の可視化

import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(1, 2, figsize=(14, 5))

# 左: 元の積分 ∫ 2x*cos(x²) dx
x = np.linspace(0, 3, 500)
y_original = 2 * x * np.cos(x**2)
axes[0].plot(x, y_original, 'b-', linewidth=2)
axes[0].fill_between(x, 0, y_original, alpha=0.2, color='blue')
axes[0].set_xlabel('x', fontsize=12)
axes[0].set_ylabel('$2x\\cos(x^2)$', fontsize=12)
axes[0].set_title('元の被積分関数', fontsize=14)
axes[0].grid(True, alpha=0.3)
axes[0].axhline(y=0, color='k', linewidth=0.5)

# 右: 置換後 ∫ cos(t) dt, t = x²
t = np.linspace(0, 9, 500)  # t = x² なので 0² → 3²
y_substituted = np.cos(t)
axes[1].plot(t, y_substituted, 'r-', linewidth=2)
axes[1].fill_between(t, 0, y_substituted, alpha=0.2, color='red')
axes[1].set_xlabel('$t = x^2$', fontsize=12)
axes[1].set_ylabel('$\\cos(t)$', fontsize=12)
axes[1].set_title('置換後の被積分関数($t = x^2$)', fontsize=14)
axes[1].grid(True, alpha=0.3)
axes[1].axhline(y=0, color='k', linewidth=0.5)

plt.suptitle('置換積分: 複雑な関数を単純化', fontsize=16)
plt.tight_layout()
plt.show()

# 結果の確認
from scipy.integrate import quad
val1, _ = quad(lambda x: 2*x*np.cos(x**2), 0, 3)
val2 = np.sin(9) - np.sin(0)  # sin(x²)|_0^3 = sin(9)
print(f"数値積分: {val1:.10f}")
print(f"解析解 sin(9): {val2:.10f}")

まとめ

本記事では、置換積分法の原理と実践を解説しました。

  • 置換積分の原理: 連鎖律(合成関数の微分)の逆操作
  • 手順: 置換 $t = g(x)$ → $dt = g'(x)dx$ → $t$ で積分 → $x$ に戻す
  • コツ: 合成関数の「内側」を $t$ とおく
  • 三角関数置換: $\sqrt{a^2 – x^2}$, $\sqrt{a^2 + x^2}$, $\sqrt{x^2 – a^2}$ に対応する3パターン
  • 万能置換: $t = \tan(x/2)$ で三角関数の有理式を処理
  • 定積分では 積分区間の変換 を忘れずに

次のステップとして、以下の記事も参考にしてください。