微積分学のすべての基礎は「極限」にあります。微分も積分も、その定義をたどれば必ず極限の概念にたどり着きます。しかし、「限りなく近づく」という直感的な表現だけでは、数学的に厳密な議論を行うことはできません。
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$ を見つけられるなら、極限が存在するということです。
これは一種のゲームです:
- 相手が $\varepsilon > 0$ を選ぶ(「$f(x)$ を $L$ からこの範囲内に収めろ」)
- 自分が $\delta > 0$ を返す(「$x$ を $a$ からこの範囲内にすればOK」)
- 本当にその $\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$ を決めるテクニックが有効
- 片側極限や無限大への極限も同じ精神で定義できる
- 極限の性質(和、積など)もε-δ論法で厳密に証明できる
次のステップとして、以下の記事も参考にしてください。
- 連続関数の定義と性質 — ε-δ論法を使って連続性を定義する
- 微分の定義と基本公式 — 極限を使った微分の定義