「連続」という概念は、直感的には「グラフが途切れない関数」を意味します。しかし、数学ではこの直感を厳密に定義する必要があります。連続性の概念は微積分学の根幹であり、中間値の定理や最大値定理といった強力な定理の基盤となります。
連続関数の理論は、方程式の解の存在証明、最適化問題、数値解析など、理工学のあらゆる分野で活用されます。本記事では、連続性のε-δ定義から始めて、不連続点の分類、そして連続関数が持つ重要な性質を丁寧に解説します。
本記事の内容
- 連続性の直感的な意味とε-δ定義
- 不連続点の分類(除去可能・跳躍・本質的)
- 連続関数の基本性質(和・積・合成の連続性)
- 中間値の定理と最大値定理
- Pythonでの可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
連続関数とは
大雑把に言うと、連続関数とは 「グラフをペンを紙から離さずに描ける関数」 です。もう少し正確に言えば、入力を少しだけ変えたとき、出力も少しだけしか変わらない関数のことです。
たとえば $f(x) = x^2$ は連続です。$x = 2$ の近くで $x$ を少しだけ動かしても、$f(x)$ は $4$ の近くにとどまります。一方、次のような関数は $x = 0$ で不連続です:
$$ g(x) = \begin{cases} 0 & (x < 0) \\ 1 & (x \geq 0) \end{cases} $$
$x$ が $0$ より少しだけ負の側にあるとき $g(x) = 0$ ですが、$x = 0$ では $g(x) = 1$ と「跳ぶ」からです。
連続性のε-δ定義
1点での連続性
関数 $f$ が点 $x = a$ で 連続 であるとは、次が成り立つことです。
$$ \begin{equation} \forall \varepsilon > 0, \quad \exists \delta > 0 \quad \text{s.t.} \quad |x – a| < \delta \implies |f(x) - f(a)| < \varepsilon \end{equation} $$
極限の定義(ε-δ論法)と比較すると、2つの違いがあります:
- $0 < |x - a|$ ではなく $|x - a|$:$x = a$ の場合も含む(当然 $|f(a) – f(a)| = 0 < \varepsilon$ なので問題ない)
- $L$ の代わりに $f(a)$:極限値が関数値と一致する
つまり、連続性は次の3条件と同値です:
- $f(a)$ が定義されている
- $\lim_{x \to a} f(x)$ が存在する
- $\lim_{x \to a} f(x) = f(a)$
区間での連続性
$f$ が区間 $I$ 上で 連続 であるとは、$I$ 上のすべての点で連続であることです。閉区間 $[a, b]$ の端点では、片側連続性を考えます:
- $x = a$ では右連続: $\lim_{x \to a^+} f(x) = f(a)$
- $x = b$ では左連続: $\lim_{x \to b^-} f(x) = f(b)$
連続性の証明例
例1: $f(x) = 3x – 2$ は $x = 1$ で連続
証明: 任意の $\varepsilon > 0$ に対して $\delta = \varepsilon/3$ とおく。$|x – 1| < \delta$ のとき:
$$ \begin{align} |f(x) – f(1)| &= |(3x – 2) – 1| \\ &= |3x – 3| = 3|x – 1| \\ &< 3\delta = 3 \cdot \frac{\varepsilon}{3} = \varepsilon \end{align} $$
$\square$
例2: $f(x) = x^2$ は任意の $a \in \mathbb{R}$ で連続
証明: 任意の $\varepsilon > 0$ に対して $\delta = \min\left(1, \frac{\varepsilon}{2|a| + 1}\right)$ とおく。
$|x – a| < \delta \leq 1$ より $|x| < |a| + 1$ なので:
$$ \begin{align} |x^2 – a^2| &= |x – a| \cdot |x + a| \\ &\leq |x – a| \cdot (|x| + |a|) \\ &< \delta \cdot (|a| + 1 + |a|) \\ &= \delta(2|a| + 1) \\ &\leq \frac{\varepsilon}{2|a| + 1} \cdot (2|a| + 1) = \varepsilon \end{align} $$
$\square$
不連続点の分類
関数が点 $a$ で連続でないとき、不連続の種類を分類できます。
除去可能不連続(Removable discontinuity)
$\lim_{x \to a} f(x)$ は存在するが、$f(a)$ が未定義、または $f(a) \neq \lim_{x \to a} f(x)$ の場合。
例: $f(x) = \frac{x^2 – 1}{x – 1}$($x \neq 1$)。極限は $\lim_{x \to 1} \frac{(x-1)(x+1)}{x-1} = 2$ だが、$f(1)$ は未定義。$f(1) = 2$ と定義し直せば連続にできるので「除去可能」と呼ばれます。
跳躍不連続(Jump discontinuity)
左側極限と右側極限はともに存在するが、一致しない場合。
例: $g(x) = \begin{cases} 0 & (x < 0) \\ 1 & (x \geq 0) \end{cases}$ は $x = 0$ で跳躍不連続。$\lim_{x \to 0^-} g(x) = 0$、$\lim_{x \to 0^+} g(x) = 1$。
本質的不連続(Essential discontinuity)
左側極限または右側極限の少なくとも一方が存在しない場合。
例: $h(x) = \sin(1/x)$ は $x = 0$ で本質的不連続。$x \to 0$ で $\sin(1/x)$ は $-1$ と $1$ の間を無限に振動し、極限が存在しません。
連続関数の基本性質
四則演算の保存
$f, g$ が点 $a$ で連続ならば、以下も $a$ で連続です:
- 和: $f + g$
- 差: $f – g$
- スカラー倍: $cf$($c$ は定数)
- 積: $fg$
- 商: $f/g$($g(a) \neq 0$ のとき)
合成関数の連続性
$g$ が $a$ で連続、$f$ が $g(a)$ で連続ならば、合成関数 $f \circ g$ も $a$ で連続です。
証明のスケッチ: 任意の $\varepsilon > 0$ に対して、$f$ の連続性から $|y – g(a)| < \delta_1 \implies |f(y) - f(g(a))| < \varepsilon$ なる $\delta_1$ が存在する。$g$ の連続性から $|x - a| < \delta \implies |g(x) - g(a)| < \delta_1$ なる $\delta$ が存在する。よって $|x - a| < \delta \implies |f(g(x)) - f(g(a))| < \varepsilon$。$\square$
中間値の定理
定理の主張
$f$ が閉区間 $[a, b]$ 上で連続で、$f(a) \neq f(b)$ ならば、$f(a)$ と $f(b)$ の間の任意の値 $c$ に対して、$f(\xi) = c$ となる $\xi \in (a, b)$ が存在する。
$$ \begin{equation} f(a) < c < f(b) \implies \exists \xi \in (a, b) \text{ s.t. } f(\xi) = c \end{equation} $$
直感的な意味
連続関数のグラフは「途切れない」ので、$f(a)$ から $f(b)$ への移動中に、その間のすべての値を必ず通過します。
応用: 方程式の解の存在
$f(x) = x^3 – x – 1$ とすると、$f(1) = -1 < 0$、$f(2) = 5 > 0$ です。$f$ は連続なので、中間値の定理より $f(\xi) = 0$ となる $\xi \in (1, 2)$ が存在します。これにより、解の存在 を直接的に証明できます。
証明(二分法を使った構成的証明)
$f(a) < 0 < f(b)$ の場合を考えます($f(a) > 0 > f(b)$ の場合は $-f$ で議論)。
区間 $[a_0, b_0] = [a, b]$ から出発し、中点 $m = (a_n + b_n)/2$ を計算します。
- $f(m) = 0$ なら $\xi = m$ で完了
- $f(m) < 0$ なら $[a_{n+1}, b_{n+1}] = [m, b_n]$
- $f(m) > 0$ なら $[a_{n+1}, b_{n+1}] = [a_n, m]$
この操作を繰り返すと、$a_n$ は単調増加、$b_n$ は単調減少で、$b_n – a_n = (b-a)/2^n \to 0$ です。完備性より $a_n, b_n$ は同一の極限 $\xi$ に収束し、$f$ の連続性と $f(a_n) \leq 0 \leq f(b_n)$ から $f(\xi) = 0$ が得られます。$\square$
最大値定理(ワイエルシュトラスの定理)
定理の主張
$f$ が閉区間 $[a, b]$ 上で連続ならば、$f$ は $[a, b]$ 上で最大値と最小値を持つ。すなわち:
$$ \exists x_M, x_m \in [a, b] \text{ s.t. } f(x_m) \leq f(x) \leq f(x_M) \quad \forall x \in [a, b] $$
重要性
この定理が成り立つには、閉区間 と 連続性 の両方が必要です。
- 開区間 $(0, 1)$ 上の $f(x) = x$ は最大値を持たない($1$ に近づくが到達しない)
- 閉区間 $[0, 1]$ 上の不連続関数 $f(x) = \begin{cases} x & (x < 1) \\ 0 & (x = 1) \end{cases}$ も最大値を持たない
Pythonでの実装
不連続点の分類の可視化
import numpy as np
import matplotlib.pyplot as plt
fig, axes = plt.subplots(1, 3, figsize=(18, 5))
# 1. 除去可能不連続: f(x) = (x^2 - 1) / (x - 1)
x = np.linspace(-1, 3, 1000)
x_plot = x[np.abs(x - 1) > 0.01]
y_plot = (x_plot**2 - 1) / (x_plot - 1)
axes[0].plot(x_plot, y_plot, 'b-', linewidth=2)
axes[0].plot(1, 2, 'wo', markersize=10, markeredgecolor='blue', markeredgewidth=2)
axes[0].set_title('除去可能不連続', fontsize=14)
axes[0].set_xlabel('x', fontsize=12)
axes[0].set_ylabel('f(x)', fontsize=12)
axes[0].grid(True, alpha=0.3)
axes[0].annotate(r'$f(x) = \frac{x^2-1}{x-1}$', xy=(0.5, 3), fontsize=12)
# 2. 跳躍不連続: ヘヴィサイドの階段関数
x = np.linspace(-2, 2, 1000)
y_neg = np.zeros_like(x[x < 0])
y_pos = np.ones_like(x[x >= 0])
axes[1].plot(x[x < 0], y_neg, 'b-', linewidth=2)
axes[1].plot(x[x >= 0], y_pos, 'b-', linewidth=2)
axes[1].plot(0, 0, 'wo', markersize=10, markeredgecolor='blue', markeredgewidth=2)
axes[1].plot(0, 1, 'bo', markersize=10)
axes[1].vlines(0, 0, 1, colors='blue', linestyles='dashed', alpha=0.5)
axes[1].set_title('跳躍不連続', fontsize=14)
axes[1].set_xlabel('x', fontsize=12)
axes[1].set_ylabel('g(x)', fontsize=12)
axes[1].grid(True, alpha=0.3)
axes[1].set_ylim(-0.5, 1.5)
# 3. 本質的不連続: sin(1/x)
x_pos = np.linspace(0.005, 2, 5000)
x_neg = np.linspace(-2, -0.005, 5000)
x_all = np.concatenate([x_neg, x_pos])
y_all = np.sin(1 / x_all)
axes[2].plot(x_all, y_all, 'b-', linewidth=0.5, alpha=0.7)
axes[2].set_title('本質的不連続', fontsize=14)
axes[2].set_xlabel('x', fontsize=12)
axes[2].set_ylabel(r'$\sin(1/x)$', fontsize=12)
axes[2].grid(True, alpha=0.3)
axes[2].set_xlim(-1, 1)
plt.tight_layout()
plt.show()
中間値の定理と二分法の可視化
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return x**3 - x - 1
# 二分法の実装
def bisection(f, a, b, tol=1e-10, max_iter=100):
"""二分法で f(x)=0 の根を求める"""
history = [(a, b)]
for _ in range(max_iter):
m = (a + b) / 2
if abs(f(m)) < tol or (b - a) / 2 < tol:
return m, history
if f(a) * f(m) < 0:
b = m
else:
a = m
history.append((a, b))
return (a + b) / 2, history
root, history = bisection(f, 1, 2)
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# 左: 中間値の定理の図解
x = np.linspace(0.5, 2.5, 500)
axes[0].plot(x, f(x), 'b-', linewidth=2, label=r'$f(x) = x^3 - x - 1$')
axes[0].axhline(y=0, color='k', linewidth=0.5)
axes[0].plot(1, f(1), 'ro', markersize=10, label=f'f(1) = {f(1):.1f}')
axes[0].plot(2, f(2), 'go', markersize=10, label=f'f(2) = {f(2):.1f}')
axes[0].plot(root, 0, 'k*', markersize=15, label=f'root ≈ {root:.6f}')
axes[0].fill_between(x[(x >= 1) & (x <= 2)], f(x[(x >= 1) & (x <= 2)]),
alpha=0.1, color='blue')
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=10)
axes[0].grid(True, alpha=0.3)
# 右: 二分法の収束過程
for i, (a, b) in enumerate(history[:10]):
axes[1].plot([a, b], [i, i], 'b-o', markersize=4, linewidth=2)
axes[1].plot((a + b) / 2, i, 'r|', markersize=10, markeredgewidth=2)
axes[1].axvline(x=root, color='k', linestyle='--', alpha=0.5, label=f'root ≈ {root:.6f}')
axes[1].set_xlabel('x', fontsize=12)
axes[1].set_ylabel('反復回数', fontsize=12)
axes[1].set_title('二分法の収束過程', fontsize=14)
axes[1].legend(fontsize=10)
axes[1].grid(True, alpha=0.3)
axes[1].invert_yaxis()
plt.tight_layout()
plt.show()
print(f"二分法の結果: x = {root:.10f}")
print(f"f(x) = {f(root):.2e}")
print(f"反復回数: {len(history)}")
まとめ
本記事では、連続関数の定義と重要な性質について解説しました。
- 連続性のε-δ定義: $|x – a| < \delta \implies |f(x) - f(a)| < \varepsilon$ が任意の $\varepsilon$ で成立
- 連続性は「極限値 = 関数値」と同値
- 不連続点は3種類: 除去可能、跳躍、本質的不連続
- 連続関数の四則演算と合成は連続性を保存する
- 中間値の定理: 連続関数は中間の値をすべてとる → 方程式の解の存在証明に使える
- 最大値定理: 閉区間上の連続関数は最大値・最小値をもつ
次のステップとして、以下の記事も参考にしてください。
- 微分の定義と基本公式 — 連続性の先にある微分可能性
- 逆関数の微分 — 連続性を使った逆関数の議論