ロピタルの定理の証明と使い方をわかりやすく解説

極限を計算するとき、$\frac{0}{0}$ や $\frac{\infty}{\infty}$ のような 不定形 に出会うことがよくあります。このような場合に威力を発揮するのが ロピタルの定理(L’Hôpital’s rule)です。分子と分母をそれぞれ微分するだけで極限が求まるという、シンプルながら強力な定理です。

ロピタルの定理は、解析学の基礎であるコーシーの平均値の定理から導かれます。本記事では、定理の厳密な証明から、適用上の注意点、そして様々な不定形への応用まで、丁寧に解説します。

本記事の内容

  • 不定形の分類と問題設定
  • コーシーの平均値の定理(復習)
  • ロピタルの定理の厳密な証明
  • 様々な不定形への適用例
  • Pythonでの数値的検証

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

不定形とは

極限 $\lim_{x \to a} \frac{f(x)}{g(x)}$ を計算するとき、単純に $x = a$ を代入して $\frac{f(a)}{g(a)}$ とはできない場合があります。

不定形の7つの型

形式
$\frac{0}{0}$ $\frac{f(a)}{g(a)} = \frac{0}{0}$ $\lim_{x \to 0} \frac{\sin x}{x}$
$\frac{\infty}{\infty}$ $\frac{f(a)}{g(a)} = \frac{\infty}{\infty}$ $\lim_{x \to \infty} \frac{e^x}{x^2}$
$0 \cdot \infty$ $\lim_{x \to 0^+} x \ln x$
$\infty – \infty$ $\lim_{x \to 0} \left(\frac{1}{\sin x} – \frac{1}{x}\right)$
$0^0$ $\lim_{x \to 0^+} x^x$
$\infty^0$ $\lim_{x \to \infty} x^{1/x}$
$1^\infty$ $\lim_{x \to 0} (1+x)^{1/x}$

ロピタルの定理は $\frac{0}{0}$ 型と $\frac{\infty}{\infty}$ 型に直接適用できます。他の型は変形によってこれらに帰着させます。

コーシーの平均値の定理

ロピタルの定理の証明に必要な準備として、コーシーの平均値の定理を確認します。

定理

$f, g$ が $[a, b]$ で連続、$(a, b)$ で微分可能、かつ $g'(x) \neq 0$($(a, b)$ 上で)ならば、ある $c \in (a, b)$ が存在して:

$$ \begin{equation} \frac{f(b) – f(a)}{g(b) – g(a)} = \frac{f'(c)}{g'(c)} \end{equation} $$

$g(x) = x$ とおくと通常のラグランジュの平均値の定理に帰着します。

ロピタルの定理

定理($\frac{0}{0}$ 型)

$\lim_{x \to a} f(x) = 0$、$\lim_{x \to a} g(x) = 0$ であり、$a$ の近傍($a$ 自身を除く)で $g'(x) \neq 0$ であるとする。このとき:

$$ \begin{equation} \lim_{x \to a} \frac{f'(x)}{g'(x)} = L \implies \lim_{x \to a} \frac{f(x)}{g(x)} = L \end{equation} $$

($L$ は実数、$+\infty$、$-\infty$ のいずれでもよい)

証明($\frac{0}{0}$ 型、$x \to a^+$ の場合)

$f(a) = g(a) = 0$ と定義(もしくは再定義)できます(極限が $0$ なので)。

$x > a$ として、コーシーの平均値の定理を区間 $[a, x]$ に適用すると、ある $c \in (a, x)$ が存在して:

$$ \frac{f(x)}{g(x)} = \frac{f(x) – f(a)}{g(x) – g(a)} = \frac{f'(c)}{g'(c)} $$

$x \to a^+$ のとき $c \to a^+$($a < c < x$ なので、はさみうちの原理から)。

したがって:

$$ \lim_{x \to a^+} \frac{f(x)}{g(x)} = \lim_{c \to a^+} \frac{f'(c)}{g'(c)} = L $$

$x \to a^-$ の場合も同様に示せるので、$\lim_{x \to a} \frac{f(x)}{g(x)} = L$。$\square$

定理($\frac{\infty}{\infty}$ 型)

$\lim_{x \to a} |f(x)| = \infty$、$\lim_{x \to a} |g(x)| = \infty$ の場合も同様の結論が成り立ちます。

$$ \lim_{x \to a} \frac{f'(x)}{g'(x)} = L \implies \lim_{x \to a} \frac{f(x)}{g(x)} = L $$

(証明はやや技巧的になりますが、本質は同じです)

適用条件と注意点

  1. $\frac{f'(x)}{g'(x)}$ の極限が存在しなければ使えない: ロピタルの定理は「$f’/g’$ の極限が存在するなら $f/g$ の極限も存在してそれに等しい」という一方向の命題です。$f’/g’$ の極限が存在しなくても $f/g$ の極限は存在し得ます。
  2. $\frac{f'(x)}{g'(x)}$ は商の微分 $(f/g)’$ ではない: 分子と分母をそれぞれ独立に微分します。
  3. 必要に応じて繰り返し適用: 微分後もまだ不定形なら、もう一度適用できます。

具体例

例1: $\lim_{x \to 0} \frac{\sin x}{x}$($\frac{0}{0}$ 型)

$$ \lim_{x \to 0} \frac{\sin x}{x} = \lim_{x \to 0} \frac{\cos x}{1} = \frac{1}{1} = 1 $$

例2: $\lim_{x \to 0} \frac{e^x – 1 – x}{x^2}$($\frac{0}{0}$ 型、2回適用)

1回目:$\lim_{x \to 0} \frac{e^x – 1}{2x}$(まだ $\frac{0}{0}$)

2回目:$\lim_{x \to 0} \frac{e^x}{2} = \frac{1}{2}$

例3: $\lim_{x \to \infty} \frac{x^3}{e^x}$($\frac{\infty}{\infty}$ 型)

$$ \lim_{x \to \infty} \frac{x^3}{e^x} = \lim_{x \to \infty} \frac{3x^2}{e^x} = \lim_{x \to \infty} \frac{6x}{e^x} = \lim_{x \to \infty} \frac{6}{e^x} = 0 $$

指数関数は多項式よりも速く増大します。

例4: $\lim_{x \to \infty} \frac{\ln x}{x^p}$($p > 0$)

$$ \lim_{x \to \infty} \frac{\ln x}{x^p} = \lim_{x \to \infty} \frac{1/x}{px^{p-1}} = \lim_{x \to \infty} \frac{1}{px^p} = 0 $$

対数関数はどんな正のべき関数よりも遅く増大します。

例5: $0 \cdot \infty$ 型 — $\lim_{x \to 0^+} x \ln x$

$\frac{0}{0}$ 型に変形します:

$$ x \ln x = \frac{\ln x}{1/x} $$

$x \to 0^+$ で $\ln x \to -\infty$、$1/x \to \infty$ なので $\frac{\infty}{\infty}$ 型:

$$ \lim_{x \to 0^+} \frac{\ln x}{1/x} = \lim_{x \to 0^+} \frac{1/x}{-1/x^2} = \lim_{x \to 0^+} (-x) = 0 $$

例6: $1^\infty$ 型 — $\lim_{x \to 0} (1 + x)^{1/x}$

対数をとります:$\ln(1+x)^{1/x} = \frac{\ln(1+x)}{x}$

$$ \lim_{x \to 0} \frac{\ln(1+x)}{x} = \lim_{x \to 0} \frac{1/(1+x)}{1} = 1 $$

よって $\lim_{x \to 0} (1+x)^{1/x} = e^1 = e$。

例7: ロピタルが使えない例

$\lim_{x \to \infty} \frac{x + \sin x}{x}$ を考えます。

ロピタルを適用すると $\frac{1 + \cos x}{1}$ ですが、$\cos x$ は振動して極限が存在しません。

しかし、元の極限は $\lim_{x \to \infty} \left(1 + \frac{\sin x}{x}\right) = 1$ と直接求められます。

ロピタルの定理の逆は成り立たないことに注意してください。

Pythonでの実装

不定形の数値的検証

import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 3, figsize=(18, 10))

# 例1: sin(x)/x → 1
x1 = np.linspace(-5, 5, 1000)
x1 = x1[np.abs(x1) > 0.01]
axes[0, 0].plot(x1, np.sin(x1) / x1, 'b-', linewidth=2)
axes[0, 0].axhline(y=1, color='r', linestyle='--', alpha=0.7)
axes[0, 0].set_title(r'$\frac{\sin x}{x} \to 1$', fontsize=14)
axes[0, 0].grid(True, alpha=0.3)

# 例2: (e^x - 1 - x)/x^2 → 1/2
x2 = np.linspace(-3, 3, 1000)
x2 = x2[np.abs(x2) > 0.01]
axes[0, 1].plot(x2, (np.exp(x2) - 1 - x2) / x2**2, 'b-', linewidth=2)
axes[0, 1].axhline(y=0.5, color='r', linestyle='--', alpha=0.7)
axes[0, 1].set_title(r'$\frac{e^x - 1 - x}{x^2} \to \frac{1}{2}$', fontsize=14)
axes[0, 1].grid(True, alpha=0.3)

# 例3: x^3/e^x → 0
x3 = np.linspace(0.1, 20, 500)
axes[0, 2].plot(x3, x3**3 / np.exp(x3), 'b-', linewidth=2)
axes[0, 2].axhline(y=0, color='r', linestyle='--', alpha=0.7)
axes[0, 2].set_title(r'$\frac{x^3}{e^x} \to 0$', fontsize=14)
axes[0, 2].grid(True, alpha=0.3)

# 例4: ln(x)/sqrt(x) → 0
x4 = np.linspace(0.1, 100, 500)
axes[1, 0].plot(x4, np.log(x4) / np.sqrt(x4), 'b-', linewidth=2)
axes[1, 0].axhline(y=0, color='r', linestyle='--', alpha=0.7)
axes[1, 0].set_title(r'$\frac{\ln x}{\sqrt{x}} \to 0$', fontsize=14)
axes[1, 0].grid(True, alpha=0.3)

# 例5: x*ln(x) → 0
x5 = np.linspace(0.001, 2, 500)
axes[1, 1].plot(x5, x5 * np.log(x5), 'b-', linewidth=2)
axes[1, 1].axhline(y=0, color='r', linestyle='--', alpha=0.7)
axes[1, 1].set_title(r'$x \ln x \to 0$', fontsize=14)
axes[1, 1].grid(True, alpha=0.3)

# 例6: (1+x)^(1/x) → e
x6 = np.linspace(-0.99, 5, 1000)
x6 = x6[np.abs(x6) > 0.001]
axes[1, 2].plot(x6, (1 + x6)**(1 / x6), 'b-', linewidth=2)
axes[1, 2].axhline(y=np.e, color='r', linestyle='--', alpha=0.7, label=f'e ≈ {np.e:.4f}')
axes[1, 2].set_title(r'$(1+x)^{1/x} \to e$', fontsize=14)
axes[1, 2].legend(fontsize=10)
axes[1, 2].grid(True, alpha=0.3)
axes[1, 2].set_ylim(0, 10)

for ax in axes.flat:
    ax.set_xlabel('x', fontsize=11)

plt.suptitle("ロピタルの定理の各種不定形", fontsize=16)
plt.tight_layout()
plt.show()

増大速度の比較

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(1, 10, 500)

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

# 左: 各関数の増大速度
axes[0].semilogy(x, np.exp(x), 'r-', linewidth=2, label=r'$e^x$')
axes[0].semilogy(x, x**5, 'b-', linewidth=2, label=r'$x^5$')
axes[0].semilogy(x, x**2, 'g-', linewidth=2, label=r'$x^2$')
axes[0].semilogy(x, np.log(x)**3, 'm-', linewidth=2, label=r'$(\ln x)^3$')
axes[0].set_xlabel('x', fontsize=12)
axes[0].set_ylabel('f(x)', fontsize=12)
axes[0].set_title('関数の増大速度の比較', fontsize=14)
axes[0].legend(fontsize=11)
axes[0].grid(True, alpha=0.3)

# 右: 比の挙動
axes[1].plot(x, x**5 / np.exp(x), 'b-', linewidth=2, label=r'$x^5/e^x \to 0$')
axes[1].plot(x, np.log(x)**3 / x, 'm-', linewidth=2, label=r'$(\ln x)^3/x \to 0$')
axes[1].set_xlabel('x', fontsize=12)
axes[1].set_ylabel('比', fontsize=12)
axes[1].set_title('ロピタルの定理: 増大速度の階層', fontsize=14)
axes[1].legend(fontsize=11)
axes[1].grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

print("増大速度の階層: ln(x) << x^p << e^x << x^x")

まとめ

本記事では、ロピタルの定理の証明と応用について解説しました。

  • ロピタルの定理: $\frac{0}{0}$ 型または $\frac{\infty}{\infty}$ 型の不定形で、$\lim \frac{f’}{g’} = L$ ならば $\lim \frac{f}{g} = L$
  • 証明の核心は コーシーの平均値の定理
  • 他の不定形($0 \cdot \infty$, $\infty – \infty$, $0^0$, $\infty^0$, $1^\infty$)は変形で帰着
  • 適用条件: $f’/g’$ の極限が存在しなければ使えない(逆は成り立たない)
  • 増大速度の階層: $\ln x \ll x^p \ll e^x \ll x^x$

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