中間値定理

Basis
最終更新: タグ: 微積分, 連続性

前提知識

夜明けに気温センサーが 10°C を示し、正午に 24°C を示したとする。気温が連続的に変化していたなら、その途中のどこかで必ず 17°C を通過したはずだ。中間値定理(Intermediate Value Theorem)はこの日常的な観察を厳密に定式化し、値を明示的に計算しなくても零点や不動点の存在を証明する道具にする。

定理の主張

定理(中間値定理、IVT)。 f:[a,b]Rf : [a, b] \to \mathbb{R}連続関数とする。yyf(a)f(a)f(b)f(b) の間の任意の値であれば、f(c)=yf(c) = y を満たす c(a,b)c \in (a, b) が存在する。

実用上便利な言い換え:f(a)f(a)f(b)f(b)異符号(すなわち f(a)f(b)<0f(a) \cdot f(b) < 0)であれば、ff(a,b)(a, b) 内に零点を持つ。

二分法による証明

一般性を失わず f(a)<y<f(b)f(a) < y < f(b) と仮定する。

二分法により区間 [an,bn][a_n, b_n] の列を [a0,b0]=[a,b][a_0, b_0] = [a, b] から次のように帰納的に定める:

  • 中点 mnan+bn2m_n \coloneqq \dfrac{a_n + b_n}{2} を取る。
  • f(mn)<yf(m_n) < y なら [an+1,bn+1][mn,bn][a_{n+1}, b_{n+1}] \coloneqq [m_n, b_n] とする。
  • f(mn)yf(m_n) \geq y なら [an+1,bn+1][an,mn][a_{n+1}, b_{n+1}] \coloneqq [a_n, m_n] とする。

構成より各ステップで f(an)<yf(bn)f(a_n) < y \leq f(b_n) が成り立ち、区間の幅は

bnan=ba2n    0b_n - a_n = \frac{b - a}{2^n} \;\to\; 0

と減少する。

R\mathbb{R}完備性(縮小区間の共通部分は一点)により、cn=0[an,bn]c \in \bigcap_{n=0}^{\infty} [a_n, b_n] となる点 cc が一意に定まる。

ancbna_n \leq c \leq b_n かつ bnan0b_n - a_n \to 0 より anca_n \to c かつ bncb_n \to cff の連続性から f(an)f(c)f(a_n) \to f(c) および f(bn)f(c)f(b_n) \to f(c)。すべての nnf(an)<yf(a_n) < y だから f(c)yf(c) \leq y。すべての nnf(bn)yf(b_n) \geq y だから f(c)yf(c) \geq y。したがって f(c)=yf(c) = y\square

応用

多項式の零点

奇数次の実多項式はかならず実数の零点を持つ。次数 2k+12k+1 の多項式 ppx+x \to +\infty++\infty に、xx \to -\infty-\infty に発散するので、十分大きい R>0R > 0 に対して p(R)<0<p(R)p(-R) < 0 < p(R) となる。IVT より (R,R)(-R, R) 内に零点が存在する。

例。 p(x)=x32p(x) = x^3 - 2 は連続で p(0)=2<0p(0) = -2 < 0p(2)=6>0p(2) = 6 > 0 を満たす。IVT より c3=2c^3 = 2 となる c(0,2)c \in (0, 2) が存在する——これが 23\sqrt[3]{2} の存在証明だ。

不動点の存在

系(1 次元の Brouwer の不動点定理)。 任意の連続関数 f:[0,1][0,1]f : [0, 1] \to [0, 1]不動点を持つ:f(c)=cf(c) = c となる c[0,1]c \in [0, 1] が存在する。

証明。 g(x)f(x)xg(x) \coloneqq f(x) - x とおく。ff[0,1][0,1][0,1][0,1] に写すので g(0)=f(0)0g(0) = f(0) \geq 0g(1)=f(1)10g(1) = f(1) - 1 \leq 0。いずれかが 00 なら 00 または 11 が不動点。そうでなければ g(0)>0>g(1)g(0) > 0 > g(1) となり、IVT より g(c)=0g(c) = 0、すなわち f(c)=cf(c) = c となる c(0,1)c \in (0, 1) が存在する。\square

二分法アルゴリズム

証明は構成的だ。各ステップで零点を含む区間を半分にするので、nn ステップ後には根の位置を (ba)/2n(b - a)/2^n の精度で特定できる。これが**二分法(bisection method)**であり、確実に線形収束する最も信頼性の高い零点探索アルゴリズムの一つだ。

def bisect(f, a, b, tol=1e-9):
    assert f(a) * f(b) < 0, "f must have opposite signs at a and b"
    while (b - a) / 2 > tol:
        m = (a + b) / 2
        if f(m) == 0:
            return m
        elif f(a) * f(m) < 0:
            b = m
        else:
            a = m
    return (a + b) / 2

まとめ

  • 中間値定理[a,b][a, b] 上の連続関数 fff(a)f(a)f(b)f(b) の間のすべての値を取る。
  • 証明:各ステップで端点が異符号を保つよう区間を二分する。R\mathbb{R} の完備性が交点を確定し、連続性がその点での値を yy に等しくさせる。
  • 零点探索:奇数次多項式はかならず実数の零点を持つ。x32x^3 - 2 への適用が 23\sqrt[3]{2} の存在を示す具体例だ。
  • 不動点[0,1][0, 1] から [0,1][0, 1] への連続写像はかならず不動点を持つ——f(x)xf(x) - x に IVT を適用して証明する。
  • 二分法:証明はアルゴリズムでもある。nn ステップで精度 ε\varepsilon を得るのに O(log(1/ε))O(\log(1/\varepsilon)) 回の評価で足りる。