スポンサーリンク

「ワイエルシュトラスの最大値定理を証明しよう!」〜連続な関数の性質〜【解析学の基礎シリーズ】関数の極限編 その16

解析学

本記事の内容

本記事はワイエルシュトラスの最大値定理の証明を与える記事です。

本記事を読むにあたり、関数の連続性とボルツァーノ-ワイエルシュトラスの定理を知っている必要があるため、その際は以下の記事を参照してください。

↓関数の連続性の記事

↓ボルツァーノ-ワイエルシュトラスの定理の記事

まずはイメージの復習から。

ワイエルシュトラスの最大値定理のイメージの復習

ワイエルシュトラスの最大値定理はどういうイメージだったかというと、

関数が閉区間で連続であれば、必ず最大値と最小値の両方が存在する。

ということでした。
詳しくは【解析学の基礎シリーズ】関数の極限編 その15を参照してください。

では、ワイエルシュトラスの最大値定理は何か、ということを明示します。

ワイエルシュトラスの最大値定理の明示

ワイエルシュトラスの最大値定理 \(K=[a,b]\)は\(\mathbb{R}\)の区間、関数\(f:K\to\mathbb{R}\)が\([a,b]\)で連続とする。このとき、\(f\)の\(K\)における最大値、最小値が存在する。 すなわち、\(\mathbb{R}\)の閉区間で定められた連続な関数はその閉区間で最大値、最小値を持つ。

証明をするための発想

筆者は最初にこの定理を知ったとき、「当たり前じゃね?」と思いました。
「そりゃあ閉区間で連続なら最大値も最小値もあるでしょうよ。」と思いました。
また同時に「どうすんだよ」とも思いました。

最大値と最小値のそれぞれの証明は殆ど同じだろう、という予想のもと(あくまで予想です)まずは最大値について考えてみましょう。

示すことは、最大値が存在すること、つまりは、ある\(c\in K\)が存在して、任意の\(x\in K\)に対して\(f(x)\leq f(c)\)ということです。

そもそも最大値が存在するためには、関数が上に有界でないといけません。
(上に有界でなければ最大値は存在しません。)
もし上に有界であれば、必ずその上限が存在します。
ということは、最大値の候補として今見つけた上限が挙げられます。
しかし、上限は必ずしも最大値とは一致しません(「上限と最大値、下限と最小値は違うの?」【解析学の基礎シリーズ】を参照)。
もしこの上限と最大値が一致していれば「最大値はさっき見つけた上限ですね。」ということで存在が証明されます。
というわけで、まずは関数が上に有界だ、ということを証明する必要があるな、と思えるわけです。

さて、上に有界だということが証明できたとして、どうやって上限が最大値と一致することを証明するのか、ということです。

今使える情報は関数が連続である、ということと上限が存在する、ということです。
「折角上限の存在が分かったし、上限の性質を使いたいなあ」と筆者は思います。

上限とは何だったかというと、

上限 \(A\subset \mathbb{R}\)、\(S\in\mathbb{R}\)とする。このとき、
  • \(S\)は\(A\)の上界である。すなわち、次が成り立つ。$$\forall x\in A\ x\leq S$$
  • \(S\)よりも小さい数は\(A\)の上界ではない。すなわち、次が成り立つ。 $$(\forall \epsilon>0)(\exists x\in A)\ {\rm s.t.}\ x>S-\epsilon$$
の2条件を満たすような\(S\)を上限(the supremum of \(A\))といい、\(S=\sup A\)と書く。 ただし、\((A\)が上に有界でない場合、\(\sup A=\infty\)と書く。

でした。
詳しくは、「上に有界、上界、上限」「下に有界、下界、下限」【解析学の基礎シリーズ】を参照してください。

つまり、
$$(\forall \epsilon>0)(\exists f(x)\in f(K))\ {\rm s.t.}\ S-\epsilon<f(x)\leq S$$
が成り立つ、ということです。

この\(\epsilon>0\)は任意の正数ですので、正数であれば何でもよいわけです。
従って、「\(\epsilon\)の部分を\(0\)に収束するような数列にして、極限を取れば\(f\)の極限と\(S\)がはさみうちの原理(「ボルツァーノ-ワイエルシュトラスの定理を証明しよう!」【解析学の基礎シリーズ】)から一致することがわかるんじゃね?」となったわけです。

つまり、
$$\lim_{n\to\infty}(S-(n\to\inftyで0に収束する数列))<\lim_{n\to\infty}f(x)<\lim_{n\to\infty}S$$
により、\(f(x)=S\)を示そうという魂胆です。

しかしこれでは少々問題があります。
というのも、上限は必ずしもその集合に属していないからです。
つまり、「必ずしも\(\sup A\in A\)ではない」ということです。
従って、極限の操作で徐々に\(f\)の値を\(S\)に近づける必要があります。
故に
$$\lim_{n\to\infty}(S-(n\to\inftyで0に収束する数列))<\lim_{n\to\infty}f(x_n)<\lim_{n\to\infty}S$$
を考えたほうが良さそうです。
ここで、\(f\)が連続な関数だったことを思い出すと、
$$\lim_{n\to\infty}f(x_n)=f\left(\lim_{n\to\infty}x_n\right)$$
です。
さらに、この\(x_n\)は全ての\(n\in\mathbb{N}\)で\(x_n\in K\)ですから有界な数列です。
従って、ボルツァーノ-ワイエルシュトラスの定理から収束する部分列が取れます。
その収束先での\(f\)の値こそ最大値ではなかろうか、と思えます。
最小値も同じです。

これはあくまで発想の原点ですので、大枠ですから厳密ではありません。
「この方針でやってみるか」程度のものです。

いざ、証明

証明の流れ

  • (ステップ1):\(f(K)\)が上に有界であることを示すために「閉区間で連続な関数はその閉区間で有界である。」ことを証明する。
    故に、上限と下限が存在することが分かる。
  • (ステップ2):見つけてきた上限が\(f(K)\)の要素であることを示す。
    上限が\(f(K)\)の要素であれば、その上限が\(f(K)\)の最大値である。
  • (ステップ3):見つけてきた下限が\(f(K)\)の要素であることを示す。
    下限が\(f(K)\)の要素であれば、その下限が\(f(K)\)の最小値である。

ワイエルシュトラスの最大値定理の証明

(ステップ1):\(f(K)\)が上に有界であることを示すために「閉区間で連続な関数はその閉区間で上に有界である。」ことを証明する。

まずは、「閉区間で連続な関数はその閉区間で上に有界である」ということを証明しましょう。

補題1. \(K=[a,b]\)は\(\mathbb{R}\)の区間、関数\(f:K\to\mathbb{R}\)が\([a,b]\)で連続とする。このとき、\(f\)は有界、つまり\(f(K)\)が有界な集合である。 言い換えれば、 $$(\forall f(t)\in f(K))(\exists U\in \mathbb{R})\ {\rm s.t.}\ f(t)\leq U$$ かつ $$(\forall f(t)\in f(K))(\exists L\in \mathbb{R})\ {\rm s.t.}\ f(t)\geq L$$ である。

(証明の流れ)

  • (補題1.の証明のステップ1):仮に故に有界でないとする。
    有界でないのだから、値が発散してしまう。
    ということは極限が存在しない。
    極限を絡ませるために部分列を用意する。
  • (補題1.の証明のステップ2):関数が連続である事実を使うと、実はその関数は収束してしまう。矛盾。

補題1.の証明

(補題1.の証明のステップ1):仮に故に有界でないとする。

背理法で証明してみましょう。

仮に、\(f(K)\)が上に有界でないとします。
すると、任意の自然数\(n\)に対して\(f(x_n)>n\)となるような\(x_n\in K\)が存在します。
\(K=[a,b]\)ですから、\(K\)は有界な集合です。
従って、\(x_n \in K\)ですから、数列\(\{x_n\}_{n\in\mathbb{N}}\)は上にも下にも有界な数列です。
故にボルツァーノ-ワイエルシュトラスの定理が使えます。

ボルツァーノ-ワイエルシュトラスの定理
数列\(\{x_n\}_{n\in\mathbb{N}}\)が有界な数列ならば、その数列に対する収束する部分列が存在する。

従って、数列\(\{x_n\}_{n\in\mathbb{N}}\)は収束する部分列\(\{x_{n(k)}\}_{k\in\mathbb{N}}\)を含みます。
そこで、\(\displaystyle \lim_{k\to\infty}x_{n(k)}=\alpha\)とします。
常に\(x_{n(k)}\in K\)、すなわち\(a\leq x_{n(k)}\leq b\)ですから、\(\displaystyle \lim_{k\to\infty}a\leq\lim_{k\to\infty}x_{n(k)}\leq\lim_{k\to\infty}b \)です。
すなわち、
$$a\leq \alpha\leq b$$
です。
\(f\)は連続ですから、\(\displaystyle \lim_{k\to\infty}f(x_{n(k)})=f(\alpha)\)です(【解析学の基礎シリーズ】関数の極限編 その14)。

(補題1.の証明のステップ2):関数が連続である事実を使うと、実はその関数は収束してしまう。

しかしながら、\(f(x_n)>n\)により\(f(x_{n(k)})>n_{(k)}\)です。
さらに、\(k\to\infty\)のとき、\(n(k)\to\infty\)です。
従って、\(f(x_n)>n\)から\(\displaystyle \lim_{n_{(k)}\to\infty}f(x_n)>\infty\)です。
これは\(\displaystyle \lim_{k\to\infty}f(x_{n(k)})=f(\alpha)\)に矛盾です。

下に有界であることも同じように証明できます。
下に有界であることは簡単に述べます。

背理法で示します。
仮に、\(f(K)\)が下に有界でないとします。
すると、任意の自然数\(n\)に対して\(f(y_n)<n\)となるような\(y_n\in K\)が存在します。
\(K=[a,b]\)ですから、\(K\)は有界な集合です。
従って、\(y_n \in K\)ですから、数列\(\{y_n\}_{n\in\mathbb{N}}\)は上にも下にも有界な数列です。
故にボルツァーノ-ワイエルシュトラスの定理が使えます。

従って、数列\(\{y_n\}_{n\in\mathbb{N}}\)は収束する部分列\(\{y_{n(k)}\}_{k\in\mathbb{N}}\)を含みます。
そこで、\(\displaystyle \lim_{k\to\infty}y_{n(k)}=\beta\)とします。
常に\(y_{n(k)}\in K\)、すなわち\(a\leq y_{n(k)}\leq b\)ですから、\(\displaystyle \lim_{k\to\infty}a\leq\lim_{k\to\infty}y_{n(k)}\leq\lim_{k\to\infty}b \)です。
すなわち、
$$a\leq \beta\leq b$$
です。
\(f\)は連続ですから、\(\displaystyle \lim_{k\to\infty}f(y_{n(k)})=f(\beta)\)です。

しかしながら、\(f(x_n)<n\)により\(f(y_{n(k)})<n_{(k)}\)です。
さらに、\(k\to\infty\)のとき、\(n(k)\to\infty\)です。
従って、\(f(y_n)<n\)から\(\displaystyle \lim_{n_{(k)}\to\infty}f(y_n)<\infty\)です。
これは\(\displaystyle \lim_{k\to\infty}f(y_{n(k)})=f(\beta)\)に矛盾です。

補題1.の証明終わり

補題1.から閉区間で連続な関数は有界であることが分かりました。
従って、\(f(K)\)には上限\(\displaystyle S=\sup_{x\in K} f(x)\)が存在します。

(ステップ2):上限が\(f(K)\)の要素であることを示す。

次にこの上限が最大値であるということを示します。
ここで、上限は上界の中の最小の値でした。
従って、\(\displaystyle S=\sup_{x\in K} f(x)\in f(K)\)であることを示せば良いのです。

さて、\(S\)は\(f(K)\)の上限ですので、
$$(\forall \epsilon>0)(\exists x_n\in K)\ {\rm s.t.}\ S-\epsilon<f(x_n)\leq S$$
が成り立ちます。
この\(\epsilon\)は正の実数であれば何でも良いわけですので、任意の\(n\in\mathbb{N}\)に対して
$$(\exists x_n\in K)\ {\rm s.t.}\ S-\frac{1}{n}<f(x_n)\leq S$$
も成り立ちます。
実際、\(n\in\mathbb{n}\)に対して\(\displaystyle \frac{1}{n}>0\)です。
従って、この不等式の各辺に極限をとると、
$$\lim_{n\to\infty}\left(S-\frac{1}{n}\right)<\lim_{n\to\infty}f(x_n)\leq \lim_{n\to\infty}S$$
です。
従って、
$$\lim_{n\to\infty}f(x_n)=S$$
です。
ここで、ボルツァーノ-ワイエルシュトラスの定理から数列\(\{x_n\}_{n\in\mathbb{N}}\)の収束する部分列\(\{x_{n(k)}\}_{k\in\mathbb{N}}\)が存在します。
すなわち、
$$(\exists c\in \mathbb{R})\ \lim_{k\to \infty}x_{n(k)}=c$$
です。
実は、\(c\in K\)です。
実際、\(x_{n(k)}\in K\)ですので、\(a\leq x_{n(k)}\leq b\)ですから、\(k\to\infty\)とすると、\(\displaystyle a\leq \lim_{k\to\infty} x_{n(k)}\leq b\)となり、\(a\leq c\leq b\)です。
従って、\(c\in K\)です。
\(f\)は\(K\)で連続ですので、\(c\in K\)でも連続です。
従って、
$$f\left(\lim_{k\to \infty}x_{n(k)}\right)=f(c)$$

ここで、もう一つの事実を使います。

補題2.
数列\(\{a_n\}_{n\in\mathbb{N}}\)が\(a\)に収束するならば、任意の部分列\(\{a_{n(k)}\}_{k\in\mathbb{N}}\)は\(a\)に収束する。 つまり、収束列の部分列は同じ極限に収束する。

補題2.の証明

示したいことは
$$(\forall \epsilon>0)(\exists N\in\mathbb{N})(\forall k\in\mathbb{N}:k\geq N\Rightarrow |a_{n(k)}-a|<\epsilon)$$
です。
今、\(\{a_n\}_{n\in\mathbb{N}}\)が\(a\)に収束しているのだから、
$$(\forall \epsilon_0>0)(\exists N_0\in\mathbb{N})(\forall n\in\mathbb{N}:n\geq N\Rightarrow |a_n-a|<\epsilon)$$
が成り立っています。
このとき、\(\{a_{n(k)}\}_{k\in\mathbb{N}}\)は\(\{a_n\}_{n\in\mathbb{N}}\)の部分列ですので\(k\geq N\)を満たす任意の\(k\in\mathbb{N}\)に対して、\(n_{(k)}\geq k\geq N\)です。
実際、\(n_{(k+1)}>n_{(k)}\)により、\(n_{(k+1)}\geq n_{(k)}+1\)であり、かつ\(n_{(1)}=1\)だからです。
故に、\(n_{(k)}\geq N\)です。
\(\epsilon_0\)も任意の正の実数ですので、新たに\(\epsilon\)と書き直すと、
$$(\forall \epsilon>0)(\exists N\in\mathbb{N})(\forall k\in\mathbb{N}:k\geq N\Rightarrow |a_{n(k)}-a|<\epsilon)$$
が成り立ちました。

補題2.の証明終わり

では戻ります。
補題2.を使うと、
$$\lim_{n\to\infty}x_n=\lim_{k\to\infty}x_{n(k)}$$
が成り立ちます。
故に、
$$f\left(\lim_{n\to\infty}x_n\right)=f\left(\lim_{k\to\infty}x_{n(k)}\right)$$
です。
以上のことから
$$f(c)=\lim_{k\to\infty}f(x_{n(k)})=S$$
が成り立ちます。
\(f(c)\in f(K)\)ですので、\(S\in f(K)\)です。

(ステップ3):見つけてきた下限が\(f(K)\)の要素であることを示す。

最小値についても同じように証明できます。

補題1.から閉区間で連続な関数は有界であることが分かりました。
従って、\(f(K)\)には下限\(\displaystyle L=\inf_{x\in K} f(x)\)が存在します。

次にこの下限が最小値であるということを示します。
ここで、下限は下界の中の最大の値でした。
従って、\(\displaystyle L=\inf_{x\in K} f(x)\in f(K)\)であることを示せば良いのです。

さて、\(L\)は\(f(K)\)の下限ですので、
$$(\forall \epsilon>0)(\exists y_n\in K)\ {\rm s.t.}\ L-\epsilon>f(y_n)\geq L$$
が成り立ちます。
この\(\epsilon\)は正の実数であれば何でも良いわけですので、任意の\(n\in\mathbb{N}\)に対して
$$(\exists y_n\in K)\ {\rm s.t.}\ L-\frac{1}{n}>f(y_n)\geq L$$
も成り立ちます。
実際、\(n\in\mathbb{n}\)に対して\(\displaystyle \frac{1}{n}>0\)です。
従って、この不等式の各辺に極限をとると、
$$\lim_{n\to\infty}\left(L-\frac{1}{n}\right)>\lim_{n\to\infty}f(y_n)\geq \lim_{n\to\infty}L$$
です。
従って、
$$\lim_{n\to\infty}f(y_n)=L$$
です。
ここで、ボルツァーノ-ワイエルシュトラスの定理から数列\(\{y_n\}_{n\in\mathbb{N}}\)の収束する部分列\(\{y_{n(k)}\}_{k\in\mathbb{N}}\)が存在します。
すなわち、
$$(\exists d\in \mathbb{R})\ \lim_{k\to \infty}y_{n(k)}=d$$
です。
実は、\(d\in K\)です。
\(f\)は\(K\)で連続ですので、\(d\in K\)でも連続です。
従って、
$$f\left(\lim_{k\to \infty}y_{n(k)}\right)=f(d)$$

ここで、補題2.により
$$\lim_{n\to\infty}y_n=\lim_{k\to\infty}y_{n(k)}$$
が成り立ちます。
故に、
$$f\left(\lim_{n\to\infty}y_n\right)=f\left(\lim_{k\to\infty}y_{n(k)}\right)$$
です。
以上のことから
$$f(d)=\lim_{k\to\infty}f(y_{n(k)})=L$$
が成り立ちます。
\(f(d)\in f(K)\)ですので、\(L\in f(K)\)です。

従って、ワイエルシュトラスの最大値定理が成り立ちます。

ワイエルシュトラスの最大値定理の証明終わり

ワイエルシュトラスの最大値定理の使いみち

この定理のつかいみちは色々ありますが、特に解析学では微積分で有効な場合が多いです。
というのも、ワイエルシュトラスの最大値定理は、ロルの定理の証明に用いられていて、ロルの定理を使って平均値の定理、それからテイラーの定理が導けます。
(「ふーん。そんな定理もあるんだ。」くらいでいいです。しかし実際学んでみるとどれも凄まじい定理です。)

ちなみに、高校数学でさも当たり前かのように使っている「ある区間で\(f’>0\)ならば、\(f\)は増加関数である。」という定理は平均値の定理を使って証明します。
従って、ワイエルシュトラスの最大値定理はそういう意味で基礎となる定理です。

今回はワイエルシュトラスの最大値定理の証明をしました。
証明の流れとしては、

  1. 閉区間で連続な関数は有界であることを示す。
  2. 従って上限と下限が存在する。
  3. その上限と下限がそれぞれ最大値、最小値であることを示す。

という割とシンプルな流れです。
しかし、実際使っているのはボルツァーノ-ワイエルシュトラスの定理だったりと、若干複雑です。
とはいえ、どういう発想で証明に至ったか、ということが少し分かれば納得がいくのではないでしょうか。

次回は「関数の発散」について解説します。

乞うご期待!質問、コメントなどお待ちしております!

この記事の内容をより詳しく知りたい方は以下のリンクの本を参照してください!
ちなみに「解析概論」は日本の歴史的名著らしいので、辞書的にもぜひ1冊持っておくと良いと思います!

コメントをする