最大値最小値定理

初等解析学における**最大値・最小値の定理**または**最大値の定理**（さいだいちのていり、; 極値定理）は、実数値函数 *f* が空でない有界閉区間  上で連続ならば *f* は最大値および最小値にそれぞれ少なくとも一点で到達することを述べるものである。式で書けば、適当な実数  が存在して
:f(c) \ge f(x) \ge f(d)\quad(\forall x\in [a,b])
が成り立つ。関連する定理として、**有界性定理**（ゆうかいせいていり、）は、有界閉区間  上で連続な函数  はその区間上で有界であることを述べる。これは適当な実数  が存在して
:m \le f(x) \le M\quad(\forall x \in [a,b])
が満たされるという意味である。最大値定理は、有界性定理における上界と下界の存在を強めて、最小上界を最大値として、および最大下界を最小値として、それぞれ実現する点が定義域内に存在することまでをも主張するのである。

最大値の定理はロルの定理の証明に利用される。また、ヴァイエルシュトラスによる定式化では、最大値の定理は「空でないコンパクト空間から実数直線の部分集合への連続写像は最大値および最小値をとる」と述べられる。

最大値の原理ともいう。

## 歴史
最大値最小値定理は、もともとベルナルド・ボルツァーノが1830年代に「函数論」の研究の中で証明を得ていたものだが、これらの内容は1930年まで公表されていなかった。ボルツァーノの証明は「連続函数が閉区間上有界であること」と「函数が最大値および最小値に到達すること」を示すことからなる。両証明は今日ボルツァーノ・ヴァイエルシュトラスの定理として知られるものと関係する。後の1860年に、ヴァイエルシュトラスによって最大値最小値定理は再発見され、（連続函数に関する）ヴァイエルシュトラスの定理、ヴァイエルシュトラスの最大値定理などとしても知られる。

## 定理の適用外となる函数
定理を用いるには定義域が有界かつ閉であることが必要であることを示す例を挙げる。何れも与えられた区間において最大値を持たないものである。

# 上に非有界な定義域  を持つ函数  は上に有界でない。
# 上に非有界な定義域  を持つ函数  は有界だが、上限である  を値にとる点  が存在しない。
# 閉でない定義域  を持つ函数  は上に有界でない。
# 閉でない定義域  を持つ函数  は有界だが、上限の値  をとる点  が存在しない。

上記例の後二者において  と定めることで、定理において閉区間上で連続であることが要求されることが理解される。

## 位相空間論における定式化
実数直線を任意の位相空間へ取り換えるとき、有界閉区間に対応するものはコンパクト空間である。位相空間論において、連続写像がコンパクト性を保つこと、および実数直線の部分集合がコンパクトであるための必要十分条件がそれが有界閉区間となることであることは既知である。従って以下のような極値定理の一般化
; 定理: 空でないコンパクト空間上で定義された実数値連続函数は上に有界であり、その上限を達成する。
が導かれる。もう少し一般に、このことは上半連続函数に対して成立する

## 定理の証明
証明にあたっては  の上界の存在と最大値について調べることになる。そうすれば、その結果を函数  に適用して  の下界の存在と最小値についての結果を得ることができる。証明は全て実数直線に関する文脈の中で行われることにも注意。

最大値定理の証明においてはその途中段階として有界性定理をまず証明する。証明は基本的に次のような段階を踏んで行う：
# 有界性定理を証明する。
# 像が  の上限に収斂するような点列を得る。
# 得られた点列の部分列で、 の定義域に属する点へ収斂するものがあることを示す。
# 連続性を用いて、得られた部分列の像が  の上限へ収斂することを示す。

; 有界性定理の証明
: 連続函数  が有界閉区間  上で上に有界でないとすると、各自然数  に対して点  を  となるものが取れるから、数列 } が作れる。区間  は有界ゆえ、ボルツァーノ・ヴァイエルシュトラスの定理から } の収斂部分列 } が取れることが従い、いまその収斂先を  とすると区間  が閉ゆえ  はこの区間に属する。 は  で連続であるから（ は  においてで）部分列 {*f*(*x**n**k*)} は実数  へ収斂しなければならないが、 が任意の  について成り立つことからは正の無限大  へ発散することが従うから、これは矛盾である。従って  は有界閉区間  において有界である。
; 最大値定理の証明
: 有界性定理により  は上に有界ゆえ、実数のから  の最小上界（上限） が存在するから、*M* = *f*(*d*) を満たす点  を見つければよい。自然数  に対して、 が最小上界ならば  は  の上界にはならないから、適当な  が存在して  とできる。これにより点列 } が作れる。最小上界  は  の上界なのだから、任意の  について  が成り立ち、従って数列 } は  へ収斂する。
: ボルツァーノ・ヴァイエルシュトラスの定理により、適当な  に収斂する部分列 } が存在して、区間  が閉ゆえ *d* は  に属する。 は  において連続だから、数列 } は  に収斂するが、数列 } は  に収斂する数列 } の部分列ゆえ、 でなければならない。従って  は  において上限  に到達する。

### 別証
; 最大値定理の別証明
: 像集合 } は有界であるから、実数直線に関する上限性質により上限  を持つ。*f*(*x*) = *M* を実現する *x* が存在しないと仮定すると、区間  上で常に , 従って 1/(*M*&nbsp;&minus;&nbsp;*f*(*x*)) は  で連続である。
: しかし *M* は上限ゆえ、任意の正数 &epsilon; に対して適当な  を選べば  とすることができるから、, 即ち 1/(*M*&nbsp;&minus;&nbsp;*f*(*x*)) は有界でない。有界性定理により有界閉区間  上の連続函数は有界であるから、これは 1/(*M*&nbsp;&minus;&nbsp;*f*(*x*)) が区間  上で連続であったことに矛盾する。従って、*f*(*x*) = *M* を満たす点  が存在しなければならない。
; 超実数によるアプローチ
: 超準解析での設定において、 を無限大超整数とし、区間  は超実数に関するものへ自然延長する。この区間を  を区分点として無限小長さが  に等しい  個の小区間へ分割することを考え、また函数  を  以上  以下の超実数上で定義される函数  へ延長する。標準の設定（ が有限）のとき、常に  個の点  の中から  による値が最大となる点が選べることが帰納法で示されることに注意すれば、によって  なる超整数  で、f^*(x_{i_0})\geq f^*(x_i)\quad (i = 0,\dots,N)を満たすものが存在することが言える。 をとして（標準）実数点c= \text{st}(x_{i_0})をとる。任意の実数点  は先の分割の適当な小区間に属すから、それを  とすると、 であり、先の不等式に  を適用して  が成り立つ。また  の連続性により\text{st}(f^*(x_{i_0}))= f(\text{st}(x_{i_0}))=f(c)が成り立つ。以上から、任意の実数  に対して  となり、 が  の上限を与える。 も参照。

## 半連続函数への定理の拡張
函数の連続性を半連続性に弱めると、それに対応して有界性定理および最大値最小値定理は（函数は補完数直線に値をとるものとして、つまり函数値として  あるいは  となることを許して）半分だけ成立する。明確に書けば、

; （上方有界性および最大値）定理: 函数  が上半連続、即ち任意の  について を満たすならば、 は上に有界で、かつその上限に到達する。
; （下方有界性および最小値）定理: 函数  が下半連続、即ち任意の  について を満たすならば、 は下に有界で、かつその下限に到達する。

後者は  に前者を適用すればよいから、前者を示せば十分である。任意の  に対して  ならば、上限も  で定理は成り立つ。それ以外の場合には、上記の証明を少し修正することで証明が得られる。有界性定理の証明において、 の  における上半連続性からは、部分数列 の上極限が  で上から抑えられることしか言えないが、矛盾を得るにはそれで十分である。最大値定理の証明においては、 の  における上半連続性からは部分数列 の上極限が有界であること  によって上から抑えられることがわかるが、それで上限  に対して  が成り立つことを言うのには十分である。

実数値函数が上半連続かつ下半連続であることと、それが通常の意味で連続であることとは同値であるから、上記二つの定理から、有界性定理と最大値最小値定理が導かれる。

## 参考文献

* 

## 関連項目

* 微分
* ロルの定理
* 平均値の定理
* 連続

## 外部リンク
* A Proof for extreme value theorem at cut-the-knot
* 
* 
* Extreme Value Theorem by  Jacqueline Wandzura with additional contributions by Stephen Wandzura, the Wolfram Demonstrations Project.
*