極限の定義(ε-δ論法)をわかりやすく解説

微積分学のすべての基礎は「極限」にあります。微分も積分も、その定義をたどれば必ず極限の概念にたどり着きます。しかし、「限りなく近づく」という直感的な表現だけでは、数学的に厳密な議論を行うことはできません。

19世紀にワイエルシュトラスが確立した ε-δ論法(イプシロン・デルタ論法)は、極限を完全に厳密に定義する方法です。この定義は解析学の土台であり、連続性、微分可能性、積分の理論すべてがこの上に構築されています。本記事では、ε-δ論法の直感的な意味から厳密な定義、そして具体的な証明の書き方まで、丁寧に解説します。

本記事の内容

  • 極限の直感的な意味とε-δ論法の動機
  • ε-δ論法による極限の厳密な定義
  • 具体例を通じた証明の書き方
  • Pythonによるε-δの関係の可視化

前提知識

この記事を読む前に、以下の概念を理解しておくと良いでしょう。

  • 実数の基本的な性質(大小関係、絶対値)
  • 関数の基本的な概念

極限の直感的な意味

まず、「$x$ が $a$ に近づくとき、$f(x)$ が $L$ に近づく」とはどういうことかを直感的に考えましょう。

$$ \lim_{x \to a} f(x) = L $$

これは、$x$ を $a$ にどんどん近づけていくと、$f(x)$ の値が $L$ にどんどん近づいていく、ということを意味します。

たとえば、$f(x) = 2x + 1$ のとき、$x \to 3$ では $f(x) \to 7$ です。$x = 2.9$ なら $f(x) = 6.8$、$x = 2.99$ なら $f(x) = 6.98$、$x = 2.999$ なら $f(x) = 6.998$ というように、$x$ が $3$ に近づくほど $f(x)$ は $7$ に近づきます。

しかし、「近づく」とはどの程度近づけばよいのでしょうか?この曖昧さを排除するのがε-δ論法です。

ε-δ論法による厳密な定義

定義

$f(x)$ の $x \to a$ における極限が $L$ であるとは、次が成り立つことです。

$$ \begin{equation} \forall \varepsilon > 0, \quad \exists \delta > 0 \quad \text{s.t.} \quad 0 < |x - a| < \delta \implies |f(x) - L| < \varepsilon \end{equation} $$

日本語で書くと:

任意の正の数 $\varepsilon$(イプシロン)に対して、ある正の数 $\delta$(デルタ)が存在して、$0 < |x - a| < \delta$ を満たすすべての $x$ に対して $|f(x) - L| < \varepsilon$ が成り立つ。

幾何学的な意味

この定義を幾何学的に解釈しましょう。

  • $|f(x) – L| < \varepsilon$ とは、$f(x)$ が $L$ から $\varepsilon$ 以内にあること、つまり $f(x)$ が区間 $(L - \varepsilon, L + \varepsilon)$ に入ることを意味します。
  • $0 < |x - a| < \delta$ とは、$x$ が $a$ から $\delta$ 以内にあること(ただし $x \neq a$)、つまり $x$ が区間 $(a - \delta, a) \cup (a, a + \delta)$ に入ることを意味します。

イメージとしては、相手(出題者)がどんなに小さな $\varepsilon$ を指定してきても、自分(回答者)がそれに応じて適切な $\delta$ を見つけられるなら、極限が存在するということです。

これは一種のゲームです:

  1. 相手が $\varepsilon > 0$ を選ぶ(「$f(x)$ を $L$ からこの範囲内に収めろ」)
  2. 自分が $\delta > 0$ を返す(「$x$ を $a$ からこの範囲内にすればOK」)
  3. 本当にその $\delta$ で条件が満たされるか検証する

このゲームにすべての $\varepsilon > 0$ に対して勝てるなら、$\lim_{x \to a} f(x) = L$ です。

なぜ $0 < |x - a|$ なのか

条件に $0 < |x - a|$ が含まれていることに注意してください。これは $x \neq a$ を意味します。極限の定義では $x = a$ での値は問わない のです。$f(a)$ が定義されていなくても、あるいは $f(a) \neq L$ であっても、極限は $L$ になり得ます。これは関数の連続性の議論で重要になるポイントです。

証明の書き方

ε-δ論法を使った証明は、以下のテンプレートに従います。

テンプレート: 1. $\varepsilon > 0$ を任意にとる 2. $\delta$ を $\varepsilon$ を使って具体的に定める(ここが核心) 3. $0 < |x - a| < \delta$ のとき $|f(x) - L| < \varepsilon$ となることを示す

$\delta$ の見つけ方のコツは、ゴールから逆算することです。$|f(x) – L| < \varepsilon$ という不等式を変形して、$|x - a|$ の条件に帰着させます。

具体例

例1: $\lim_{x \to 2} (3x + 1) = 7$

証明:

任意の $\varepsilon > 0$ に対して、$\delta = \varepsilon / 3$ とおく。

$0 < |x - 2| < \delta$ のとき:

$$ \begin{align} |f(x) – L| &= |(3x + 1) – 7| \\ &= |3x – 6| \\ &= 3|x – 2| \\ &< 3\delta \\ &= 3 \cdot \frac{\varepsilon}{3} \\ &= \varepsilon \end{align} $$

よって $|f(x) – 7| < \varepsilon$ が成り立つ。$\square$

$\delta$ の見つけ方: $|3x – 6| = 3|x – 2| < \varepsilon$ とするには $|x - 2| < \varepsilon/3$ であればよい。だから $\delta = \varepsilon/3$ とすればよいとわかります。

例2: $\lim_{x \to 3} x^2 = 9$

この例は少し難しくなります。$|f(x) – L| = |x^2 – 9| = |x – 3||x + 3|$ と因数分解できますが、$|x + 3|$ の部分が $x$ に依存するため、$\delta$ を単純に決められません。

証明:

任意の $\varepsilon > 0$ に対して、$\delta = \min\left(1, \frac{\varepsilon}{7}\right)$ とおく。

$0 < |x - 3| < \delta$ のとき、$\delta \leq 1$ なので $|x - 3| < 1$、すなわち $2 < x < 4$ である。よって:

$$ |x + 3| < 4 + 3 = 7 $$

したがって:

$$ \begin{align} |x^2 – 9| &= |x – 3| \cdot |x + 3| \\ &< \delta \cdot 7 \\ &\leq \frac{\varepsilon}{7} \cdot 7 \\ &= \varepsilon \end{align} $$

よって $|x^2 – 9| < \varepsilon$ が成り立つ。$\square$

ポイント: $\delta \leq 1$ という制約を先に入れることで、$|x + 3|$ を定数 $7$ で上から抑えています。$\delta = \min(1, \varepsilon/7)$ とすることで、$\delta \leq 1$ と $\delta \leq \varepsilon/7$ の両方が保証されます。

例3: $\lim_{x \to 0} x \sin\left(\frac{1}{x}\right) = 0$

$\sin(1/x)$ は $x \to 0$ で激しく振動しますが、$x$ が $0$ に近づくとき $x \sin(1/x)$ は $0$ に収束します。

証明:

任意の $\varepsilon > 0$ に対して、$\delta = \varepsilon$ とおく。

$0 < |x - 0| < \delta$、すなわち $0 < |x| < \delta$ のとき:

$$ \begin{align} \left|x \sin\left(\frac{1}{x}\right) – 0\right| &= |x| \cdot \left|\sin\left(\frac{1}{x}\right)\right| \\ &\leq |x| \cdot 1 \quad (\because |\sin(\cdot)| \leq 1) \\ &< \delta \\ &= \varepsilon \end{align} $$

よって $|x \sin(1/x)| < \varepsilon$ が成り立つ。$\square$

片側極限と無限大の極限

右側極限

$$ \lim_{x \to a^+} f(x) = L \iff \forall \varepsilon > 0, \exists \delta > 0 \text{ s.t. } 0 < x - a < \delta \implies |f(x) - L| < \varepsilon $$

左側極限

$$ \lim_{x \to a^-} f(x) = L \iff \forall \varepsilon > 0, \exists \delta > 0 \text{ s.t. } -\delta < x - a < 0 \implies |f(x) - L| < \varepsilon $$

$x \to \infty$ の極限

$$ \lim_{x \to \infty} f(x) = L \iff \forall \varepsilon > 0, \exists M > 0 \text{ s.t. } x > M \implies |f(x) – L| < \varepsilon $$

ここでは $\delta$ の代わりに $M$ が登場し、「$x$ が十分大きければ」という条件になります。

極限値が無限大

$$ \lim_{x \to a} f(x) = \infty \iff \forall M > 0, \exists \delta > 0 \text{ s.t. } 0 < |x - a| < \delta \implies f(x) > M $$

極限の性質の証明

ε-δ論法を用いて、極限の基本的な性質を証明できます。

和の極限

$\lim_{x \to a} f(x) = L$、$\lim_{x \to a} g(x) = M$ ならば $\lim_{x \to a} [f(x) + g(x)] = L + M$ である。

証明:

任意の $\varepsilon > 0$ に対して、仮定より: – $\exists \delta_1 > 0$ s.t. $0 < |x - a| < \delta_1 \implies |f(x) - L| < \varepsilon/2$ - $\exists \delta_2 > 0$ s.t. $0 < |x - a| < \delta_2 \implies |g(x) - M| < \varepsilon/2$

$\delta = \min(\delta_1, \delta_2)$ とおくと、$0 < |x - a| < \delta$ のとき:

$$ \begin{align} |[f(x) + g(x)] – (L + M)| &= |[f(x) – L] + [g(x) – M]| \\ &\leq |f(x) – L| + |g(x) – M| \quad (\because \text{三角不等式}) \\ &< \frac{\varepsilon}{2} + \frac{\varepsilon}{2} \\ &= \varepsilon \end{align} $$

$\square$

ポイント: $\varepsilon$ を $\varepsilon/2$ ずつ「配分」するテクニックは、ε-δ論法の証明でよく使われます。

極限が存在しないことの証明

$\lim_{x \to a} f(x) = L$ が成り立たないことを示すには、定義の否定を使います:

$$ \exists \varepsilon > 0 \text{ s.t. } \forall \delta > 0, \exists x \text{ s.t. } 0 < |x - a| < \delta \text{ かつ } |f(x) - L| \geq \varepsilon $$

: $\lim_{x \to 0} \sin(1/x)$ は存在しない。

任意の $L$ に対して、$\varepsilon = 1/2$ とする。任意の $\delta > 0$ に対して、$0 < |x| < \delta$ の範囲に $\sin(1/x) = 1$ となる点と $\sin(1/x) = -1$ となる点が存在する($1/x = \pi/2 + 2n\pi$ と $1/x = -\pi/2 + 2n\pi$ で十分大きい $n$ をとればよい)。この2点での $f$ の値の差は $2$ であるから、少なくとも一方は $L$ から $1$ 以上離れている。よって $|f(x) - L| \geq 1 > \varepsilon$ となる点が必ず存在する。

Pythonでの実装

ε-δの関係を可視化するコードを書いてみましょう。

import numpy as np
import matplotlib.pyplot as plt

# 例: f(x) = x^2, a=2, L=4 に対するε-δの関係を可視化
def f(x):
    return x**2

a = 2.0
L = 4.0

# 関数のプロット
x = np.linspace(0, 4, 500)
y = f(x)

fig, axes = plt.subplots(1, 3, figsize=(18, 6))

# 3つの異なるεに対してδを示す
epsilons = [2.0, 1.0, 0.3]

for idx, eps in enumerate(epsilons):
    ax = axes[idx]

    # δの計算: |x^2 - 4| < ε を満たすδ
    # |x-2||x+2| < ε で、|x-2|<1 とすると |x+2|<5
    # よって δ = min(1, ε/5)
    delta = min(1, eps / 5)

    ax.plot(x, y, 'b-', linewidth=2, label=r'$f(x) = x^2$')
    ax.plot(a, L, 'ko', markersize=8)

    # εの帯(水平)
    ax.axhspan(L - eps, L + eps, alpha=0.2, color='red', label=rf'$\varepsilon = {eps}$')
    ax.axhline(y=L - eps, color='red', linestyle='--', alpha=0.5)
    ax.axhline(y=L + eps, color='red', linestyle='--', alpha=0.5)

    # δの帯(垂直)
    ax.axvspan(a - delta, a + delta, alpha=0.2, color='green', label=rf'$\delta = {delta:.3f}$')
    ax.axvline(x=a - delta, color='green', linestyle='--', alpha=0.5)
    ax.axvline(x=a + delta, color='green', linestyle='--', alpha=0.5)

    ax.set_xlabel('x', fontsize=12)
    ax.set_ylabel('f(x)', fontsize=12)
    ax.set_title(rf'$\varepsilon = {eps}, \delta = {delta:.3f}$', fontsize=14)
    ax.legend(fontsize=10)
    ax.set_xlim(0, 4)
    ax.set_ylim(-1, 10)
    ax.grid(True, alpha=0.3)

plt.suptitle(r'$\varepsilon$-$\delta$ の関係: $\lim_{x \to 2} x^2 = 4$', fontsize=16)
plt.tight_layout()
plt.show()

このコードを実行すると、$\varepsilon$ が小さくなるにつれて $\delta$ も小さくなる様子が視覚的に確認できます。赤い帯($\varepsilon$ の範囲)の中に関数値が収まるように、緑の帯($\delta$ の範囲)が決まっています。

import numpy as np
import matplotlib.pyplot as plt

# ε に対する δ の関係をプロット(f(x)=x^2, a=2, L=4)
epsilons = np.linspace(0.01, 3, 200)
deltas = np.minimum(1, epsilons / 5)

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(epsilons, deltas, 'b-', linewidth=2)
ax.set_xlabel(r'$\varepsilon$', fontsize=14)
ax.set_ylabel(r'$\delta$', fontsize=14)
ax.set_title(r'$\varepsilon$ vs $\delta$: $f(x) = x^2$, $a = 2$', fontsize=14)
ax.grid(True, alpha=0.3)
ax.set_xlim(0, 3)
ax.set_ylim(0, 1.1)
plt.tight_layout()
plt.show()

このグラフは、$\varepsilon$ が小さくなるにつれて $\delta$ が(場合によっては線形に)小さくなることを示しています。$\varepsilon > 5$ では $\delta = 1$ で頭打ちになります($\min$ の効果)。

import numpy as np
import matplotlib.pyplot as plt

# sin(1/x) の極限が存在しないことの可視化
x_pos = np.linspace(0.001, 0.5, 5000)
x_neg = np.linspace(-0.5, -0.001, 5000)
x_all = np.concatenate([x_neg, x_pos])
y_all = np.sin(1 / x_all)

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

# sin(1/x) のプロット
axes[0].plot(x_all, y_all, 'b-', linewidth=0.5, alpha=0.7)
axes[0].set_xlabel('x', fontsize=12)
axes[0].set_ylabel(r'$\sin(1/x)$', fontsize=12)
axes[0].set_title(r'$\sin(1/x)$: 極限が存在しない', fontsize=14)
axes[0].set_xlim(-0.5, 0.5)
axes[0].grid(True, alpha=0.3)

# x * sin(1/x) のプロット(こちらは極限が0)
y_bounded = x_all * np.sin(1 / x_all)
axes[1].plot(x_all, y_bounded, 'b-', linewidth=0.5, alpha=0.7)
axes[1].plot(x_all, np.abs(x_all), 'r--', linewidth=1, label=r'$|x|$')
axes[1].plot(x_all, -np.abs(x_all), 'r--', linewidth=1)
axes[1].set_xlabel('x', fontsize=12)
axes[1].set_ylabel(r'$x\sin(1/x)$', fontsize=12)
axes[1].set_title(r'$x\sin(1/x)$: 極限は0(はさみうち)', fontsize=14)
axes[1].set_xlim(-0.5, 0.5)
axes[1].legend(fontsize=10)
axes[1].grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

左のグラフでは $\sin(1/x)$ が $x \to 0$ で激しく振動して極限をもたないことが、右のグラフでは $x \sin(1/x)$ が $\pm|x|$ に「はさまれて」$0$ に収束することが視覚的にわかります。

まとめ

本記事では、極限のε-δ論法による厳密な定義を解説しました。

  • ε-δ論法は「任意の $\varepsilon > 0$ に対して $\delta > 0$ が存在して…」という形式で極限を定義する
  • 幾何学的には、出力の誤差 $\varepsilon$ に対して入力の範囲 $\delta$ を決めるゲームとして理解できる
  • 証明ではゴールから逆算して $\delta$ を $\varepsilon$ の式で定める
  • $x^2$ のような非線形関数では $\delta = \min(1, \varepsilon/C)$ のように2段階で $\delta$ を決めるテクニックが有効
  • 片側極限や無限大への極限も同じ精神で定義できる
  • 極限の性質(和、積など)もε-δ論法で厳密に証明できる

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