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

微積分を学ぶ際、最初に出てくる重要な概念が「極限」です。高校数学では「$x$ を $a$ に限りなく近づけると $f(x)$ が $L$ に近づく」といった直感的な表現で極限を扱いますが、大学数学ではこれを厳密に定義する必要があります。

その厳密な定義が ε-δ論法(イプシロン・デルタ論法) です。ε-δ論法は解析学の基礎をなす論法であり、微積分の定理を証明する際に不可欠な道具です。

本記事の内容

  • ε-δ論法の直感的な理解
  • 数学的な定義と読み方
  • 具体例を用いたε-δ論法の適用
  • Pythonによる可視化

前提知識

この記事を読む前に、以下の概念を理解しておくと読み進めやすくなります。

  • 関数の基本的な概念($y = f(x)$ の意味)
  • 絶対値の性質($|a – b|$ が $a$ と $b$ の距離を表すこと)

極限の直感的な理解

まず、極限とは何かを直感的に理解しましょう。

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

この式は、「$x$ が $a$ に近づくとき、$f(x)$ は $L$ に近づく」ことを意味します。ここで重要なのは、$x = a$ における $f(x)$ の値は問題にしていないということです。あくまで $x$ が $a$ に近づくときの振る舞いを見ています。

例えば、$f(x) = 2x + 1$ のとき、$x \to 3$ での極限を考えると、$x$ が $3$ に近づくにつれて $f(x)$ は $7$ に近づきます。これは直感的に明らかです。

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

ε-δ論法の定義

ε-δ論法による極限の定義は次の通りです。

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

とは、

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

を意味します。

日本語で読むと次のようになります。

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

定義の読み解き方

この定義を順番に読み解きましょう。

  1. $\varepsilon > 0$: これは $f(x)$ と $L$ の誤差の許容範囲です。どんなに小さな $\varepsilon$ を指定されても、という意味です。
  2. $\delta > 0$: $\varepsilon$ に応じて決まる、$x$ と $a$ の距離の制約です。
  3. $0 < |x - a| < \delta$: $x$ が $a$ のδ近傍にあること(ただし $x = a$ は除く)。
  4. $|f(x) – L| < \varepsilon$: そのとき $f(x)$ は $L$ のε近傍にあること。

イメージとしては、「出力の精度($\varepsilon$)をどれだけ厳しく要求されても、入力を十分に近づければ($\delta$ を適切に選べば)その要求を満たせる」ということです。

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

実際にε-δ論法を使って、$\lim_{x \to 3} (2x + 1) = 7$ を証明してみましょう。

任意の $\varepsilon > 0$ が与えられたとします。$\delta = \varepsilon / 2$ とおきます。

$0 < |x - 3| < \delta$ のとき、

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

よって $|f(x) – 7| < \varepsilon$ が成り立ちます。したがって、$\lim_{x \to 3} (2x + 1) = 7$ が示されました。

δの見つけ方

上の証明では $\delta = \varepsilon / 2$ と天下り的に設定しましたが、実際にはどうやって $\delta$ を見つけるのでしょうか。

コツは、$|f(x) – L|$ を計算して $|x – a|$ で表すことです。

$$ |f(x) – L| = |2x + 1 – 7| = 2|x – 3| $$

$2|x – 3| < \varepsilon$ となるには $|x - 3| < \varepsilon / 2$ であればよいので、$\delta = \varepsilon / 2$ と設定すればよいことがわかります。

具体例2: $\lim_{x \to 2} x^2 = 4$

次に、2次関数の例を見てみましょう。

任意の $\varepsilon > 0$ に対して、$\delta = \min(1, \varepsilon / 5)$ とおきます。

$0 < |x - 2| < \delta$ のとき、$\delta \leq 1$ より $|x - 2| < 1$ なので $1 < x < 3$ です。したがって $|x + 2| < 5$ です。

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

よって $\lim_{x \to 2} x^2 = 4$ が示されました。

ここでのポイントは、$|x + 2|$ を定数で上から抑えるために、まず $\delta \leq 1$ という制約を設けたことです。2次以上の関数では、このように $\delta$ に上限を設けるテクニックがよく使われます。

Pythonでの可視化

ε-δ論法を視覚的に理解するために、Pythonで可視化してみましょう。

import numpy as np
import matplotlib.pyplot as plt

# f(x) = 2x + 1, a = 3, L = 7 の場合
def f(x):
    return 2 * x + 1

a = 3
L = 7

# εとδの関係を可視化
fig, axes = plt.subplots(1, 3, figsize=(15, 5))

epsilons = [2.0, 1.0, 0.5]

for idx, eps in enumerate(epsilons):
    ax = axes[idx]
    delta = eps / 2  # δ = ε/2

    x = np.linspace(0, 6, 300)
    y = f(x)

    ax.plot(x, y, 'b-', linewidth=2, label='$f(x) = 2x + 1$')

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

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

    ax.set_xlim(0, 6)
    ax.set_ylim(0, 14)
    ax.set_xlabel('$x$')
    ax.set_ylabel('$f(x)$')
    ax.set_title(f'$\\varepsilon = {eps}$, $\\delta = {delta}$')
    ax.legend(fontsize=8, loc='upper left')
    ax.grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('epsilon_delta.png', dpi=150, bbox_inches='tight')
plt.show()

このコードでは、$\varepsilon$ を変化させたときの $\delta$ の対応を可視化しています。$\varepsilon$ が小さくなると $\delta$ も小さくなり、$x$ を $a$ により近づける必要があることがわかります。緑の帯($\delta$ の範囲)内のグラフが、赤い帯($\varepsilon$ の範囲)内に収まっていることを確認してください。

極限が存在しない場合

ε-δ論法は極限の存在を示すだけでなく、極限が存在しないことを示す際にも使えます。

例えば、$f(x) = \sin(1/x)$ について $\lim_{x \to 0} \sin(1/x)$ は存在しません。これは、$x \to 0$ のとき $1/x$ が激しく振動するため、$f(x)$ がどの値にも収束しないからです。

import numpy as np
import matplotlib.pyplot as plt

# sin(1/x) の振る舞いを可視化
fig, ax = plt.subplots(figsize=(10, 5))

x_pos = np.linspace(0.001, 1, 5000)
x_neg = np.linspace(-1, -0.001, 5000)

ax.plot(x_pos, np.sin(1 / x_pos), 'b-', linewidth=0.5, alpha=0.8)
ax.plot(x_neg, np.sin(1 / x_neg), 'b-', linewidth=0.5, alpha=0.8)

ax.set_xlim(-1, 1)
ax.set_ylim(-1.5, 1.5)
ax.set_xlabel('$x$')
ax.set_ylabel('$\\sin(1/x)$')
ax.set_title('$f(x) = \\sin(1/x)$: Limit does not exist as $x \\to 0$')
ax.axhline(y=0, color='k', linewidth=0.5)
ax.axvline(x=0, color='k', linewidth=0.5)
ax.grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('sin_1_over_x.png', dpi=150, bbox_inches='tight')
plt.show()

グラフを見ると、$x = 0$ の近傍で $\sin(1/x)$ が $-1$ と $1$ の間を激しく振動しており、特定の値に収束しないことがわかります。

まとめ

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

  • ε-δ論法は「任意の $\varepsilon > 0$ に対して適切な $\delta > 0$ が存在する」という形式で極限を定義する
  • $\varepsilon$ は出力の精度、$\delta$ は入力の制約を表す
  • 1次関数では $\delta$ は $\varepsilon$ の定数倍で求まる
  • 2次以上の関数では $\delta$ に上限を設けて $|f(x) - L|$ を制御するテクニックを使う
  • Pythonの可視化で、$\varepsilon$ と $\delta$ の対応関係を直感的に理解できる

ε-δ論法は慣れるまで難しく感じますが、解析学のあらゆる定理の出発点です。次のステップとして、連続関数の定義もε-δ論法で記述されますので、以下の記事も参考にしてください。