WIIS

教材一覧
教材一覧
教材検索
OPTIMIZATION OF FUNCTIONS

多変数関数の最適化のための1階の必要条件

目次

Share on twitter
Twitterで共有
Share on email
メールで共有

関数の定義域の内点が極大点や極小点であるための1階の必要条件

多変数関数\(f:\mathbb{R} ^{n}\supset X\rightarrow \mathbb{R} \)が与えられたとき、定義域上の点\(a\in X\)が極大点(局所的最大点)であることとは、\begin{equation*}\exists \varepsilon >0,\ \forall x\in N_{\varepsilon }\left( a\right) \cap
X:f\left( a\right) \geq f\left( x\right)
\end{equation*}すなわち、\begin{equation*}
\exists \varepsilon >0,\ \forall x\in \left( a-\varepsilon ,a+\varepsilon
\right) \cap X:f\left( a\right) \geq f\left( x\right)
\end{equation*}が成り立つことを意味します。また、\(f\)が極大点\(a\)に対して定める値\(f\left( a\right) \)を\(f\)の極大値(局所的最大値)と呼びます。

関数\(f:\mathbb{R} ^{n}\supset X\rightarrow \mathbb{R} \)が与えられたとき、定義域上の点\(a\in X\)が極小点(局所的最小点)であることとは、\begin{equation*}\exists \varepsilon >0,\ \forall x\in N_{\varepsilon }\left( a\right) \cap
X:f\left( a\right) \leq f\left( x\right)
\end{equation*}すなわち、\begin{equation*}
\exists \varepsilon >0,\ \forall x\in \left( a-\varepsilon ,a+\varepsilon
\right) \cap X:f\left( a\right) \leq f\left( x\right)
\end{equation*}が成り立つことを意味します。また、\(f\)が極小点\(a\)に対して定める値\(f\left( a\right) \)を\(f\)の極小値(局所的極小値)と呼びます。

一般に、関数\(f\)は極大点や極小点を持つとは限りませんが、仮に極大点や極小点を持つ場合、それはどのような条件を満たすのでしょうか。以下では関数の定義域上の点が極大点や極小点であるための必要条件を特定します。

関数\(f:\mathbb{R} ^{n}\supset X\rightarrow \mathbb{R} \)の定義域上の点\(a\in X\)が\(f\)の極大点であるものとします。さらに、この点\(a\)は以下の2つの条件を満たすものとします。1つ目の条件は、点\(a\)が\(f\)の定義域\(X\)の内点であるということです。この場合、\(f\)は点\(a\)を含め周辺の任意の点において定義されていることが保証されます。2つ目の条件は、\(f\)が点\(a\)において偏微分可能であるということです。以下が具体例です。

例(極大点における勾配ベクトル)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =-x^{2}-y^{2}
\end{equation*}を定めるものとします。\(f\)のグラフは以下の通りです(図中の曲面)。

図:関数の極大点
図:関数の極大点

点\(\left( 0,0\right) \)は極大点であるため、変数\(\left( x,y\right) \)がとり得る値の範囲を点\(\left( 0,0\right) \)の周辺に限定したとき、\(f\left( x,y\right) \)の値は点\(\left( 0,0\right) \)において最大化されます。したがって、\(f\)のグラフの点\(\left( 0,0\right) \)における接平面は水平になるはずです(図中のメッシュ面)。\(f\)は点\(\left( 0,0\right) \)において偏微分可能であり、接平面の方程式は、\begin{eqnarray*}z &=&f\left( 0,0\right) +\nabla f\left( 0,0\right) \cdot \left(
x-0,y-0\right) \\
&=&f\left( 0,0\right) +\nabla f\left( 0,0\right) \cdot \left( x,y\right)
\end{eqnarray*}となります。一方、点\(\left( 0,0,f\left( 0,0\right) \right) \)を通る水平な平面の方程式は、\begin{equation*}z=f\left( 0,0\right)
\end{equation*}です。これらは等しいため、\begin{equation*}
\nabla f\left( 0,0\right) \cdot \left( x,y\right) =0
\end{equation*}すなわち、\begin{equation*}
\nabla f\left( 0,0\right) =\left( 0,0\right)
\end{equation*}という関係が成り立つことが予想されます。後に厳密に証明しますが、これは正しい予想です。

例(極大点における勾配ベクトル)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =1
\end{equation*}を定めるものとします。\(f\)のグラフは以下の通りです(図中の曲面)。

図:関数の極大点
図:関数の極大点

任意の点\(\left( a,b\right) \in \mathbb{R} ^{2}\)は極大点であるため、変数\(\left( x,y\right) \)がとり得る値の範囲を点\(\left( a,b\right) \)の周辺に限定したとき、\(f\left( x,y\right) \)の値は点\(\left(a,b\right) \)において最大化されます。したがって、\(f\)のグラフの点\(\left(a,b\right) \)における接平面は水平になるはずです(図中のメッシュ面)。\(f\)は点\(\left( a,b\right) \)において偏微分可能であり、接平面の方程式は、\begin{equation*}z=f\left( a,b\right) +\nabla f\left( a,b\right) \cdot \left( x-a,y-b\right)
\end{equation*}となります。一方、点\(\left( a,b,f\left( a,b\right) \right) \)を通る水平な平面の方程式は、\begin{equation*}z=f\left( a,b\right)
\end{equation*}です。これらは等しいため、\begin{equation*}
\nabla f\left( a,b\right) \cdot \left( x-a,y-b\right)
\end{equation*}すなわち、\begin{equation*}
\nabla f\left( a,b\right) =\left( 0,0\right)
\end{equation*}という関係が成り立つことが予想されます。後に厳密に証明しますが、これは正しい予想です。

極小点についても同様の議論が成立します。

命題(内点が極大点や極小点であるための1階の必要条件)
関数\(f:\mathbb{R} ^{n}\supset X\rightarrow \mathbb{R} \)の定義域の内点\(a\in X^{i}\)を任意に選んだとき、\(f\)は点\(a\)において偏微分可能であるとともに、点\(a\)は\(f\)の極大点もしくは極小点であるならば、\begin{equation*}\nabla f\left( a\right) =0
\end{equation*}が成り立つ。

証明

プレミアム会員専用コンテンツです
ログイン】【会員登録

関数\(f\)が定義域上の点\(a\)において偏微分可能であり、なおかつそこでの勾配ベクトルがゼロベクトルである場合、すなわち\(\nabla f\left(a\right) =0\)が成り立つ場合には、そのような点\(a\)を\(f\)の停留点(stationary point)と呼びます。上の命題は、関数\(f\)の定義域上の内点\(a\)が極大点や極小点である場合には、その点\(a\)は\(f\)の停留点であるという主張です。これを局所最適化のための1階の必要条件(first order necessarycondition for local optimality)と呼びます。

上の命題の逆は成立するとは限りません。つまり、関数\(f\)の定義域上の内点\(a\)が停留点である場合、その点\(a\)は\(f\)の極大点や極大点であるとは限りません。以下の例より明らかです。

例(停留点は極大点や極小点であるとは限らない)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =xy
\end{equation*}を定めるものとします。\(f\)のグラフは以下の通りです。

図:極大点や極小点ではない停留点
図:極大点や極小点ではない停留点

点\(\left( 0,0\right) \)は\(f\)の定義域\(\mathbb{R} ^{2}\)の内点であるとともに、\(f\)は点\(\left( 0,0\right) \)において偏微分可能です。しかも、点\(\left( 0,0\right) \)における勾配ベクトルは、\begin{eqnarray*}\nabla f\left( 0,0\right) &=&\left. \left( y,x\right) \right\vert _{\left(
x,y\right) =\left( 0,0\right) }\quad \because f\text{の定義} \\
&=&\left( 0,0\right)
\end{eqnarray*}となるため点\(\left( 0,0\right) \)は\(f\)の停留点です。一方、点\(\left( 0,0\right) \)は\(f\)の極大点や極小点ではありません。実際、\begin{equation*}f\left( 0,0\right) =0
\end{equation*}である一方で、点\(\left(0,0\right) \)の周辺の点\(\left( x,y\right) \)を任意に選んだとき、\(x\)と\(y\)が同符号ならば、\begin{equation*}f\left( x,y\right) >0=f\left( 0,0\right)
\end{equation*}が成り立ち、\(x\)と\(y\)が異符号ならば、\begin{equation*}f\left( x,y\right) <0=f\left( 0,0\right)
\end{equation*}となるからです。

 

関数が偏微分可能ではない点も極大点や極小点になり得る

局所最適化のための1階の必要条件は、関数が偏微分可能な定義域の内点が極大値や極小値であるための必要条件を与えており、関数が偏微分可能ではない内点については何も語っていません。ただ、以下の例から明らかであるように、関数が偏微分可能ではない内点が極大点や極小点である状況は起こり得ます。

例(関数が極大点や極小点において偏微分可能ではない場合)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =x^{2}+y^{2}+\left\vert x\right\vert +\left\vert
y\right\vert
\end{equation*}を定めるものとします。\(f\)のグラフは以下の通りです。

図:停留点ではない極大点
図:停留点ではない極大点

点\(\left( 0,0\right) \)は\(f\)の定義域の内点であるとともに極小点でもありますが、\(f\)は点\(\left( 0,0\right) \)において偏微分可能ではありません(演習問題)。したがって、点\(\left( 0,0\right) \)は局所最適化のための1階の必要条件を満たしません。

以上の例より、関数が偏微分可能ではない内点が極大点や極小点になり得ることが明らかになりました。このような極大点や極小点は局所最適化のための1階の必要条件を満たしません。したがって、関数の極大点や極小点となり得る点の候補を特定する際には、局所最適化のための1階の必要条件を満たす内点に加え、関数が偏微分可能ではない内点も候補に加える必要があります。

 

関数の定義域の境界点も極大点や極小点になり得る

局所最適化のための1階の必要条件は、関数が偏微分可能な内点が極大値や極小値であるための必要条件を与えており、内点ではない点、すなわち境界点については何も語っていません。ただ、以下の例から明らかであるように、関数の定義域の境界点が極大点や極小点になる状況は起こり得ます。

例(境界点であるような極大点や極小点)
関数\(f:\mathbb{R} ^{2}\supset \left[ 0,1\right] \times \left[ 0,1\right] \rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \left[ 0,1\right] \times \left[ 0,1\right] \)に対して、\begin{equation*}f\left( x,y\right) =x^{2}y-xy^{2}
\end{equation*}を定めるものとします。\(f\)のグラフは以下の通りです。

図:境界点であるような極大点・極小点
図:境界点であるような極大点・極小点

この関数\(f\)の定義域\(\left[0,1\right] \times \left[ 0,1\right] \)の内点には極小点や極大点は存在しない一方で、定義域の境界点である点\(\left( 1,\frac{1}{2}\right) \)は\(f\)の極大点であり、やはり定義域の境界点である点\(\left( \frac{1}{2},1\right) \)は\(f\)の極小点です(演習問題)。

したがって、関数の極大点や極小点となり得る点の候補を特定する際には、局所最適化のための1階の必要条件を満たす内点と、関数が偏微分可能ではない内点に加え、関数の定義域の要素であるようなすべての境界点を候補に加える必要があります。

 

定義域の内点が関数の最大点や最小点であるための1階の必要条件

関数\(f:\mathbb{R} ^{n}\supset X\rightarrow \mathbb{R} \)が与えられたとき、定義域上の点\(a\in X\)が最大点(大域的最大点)であることとは、\begin{equation*}\exists a\in X,\ \forall x\in X:f\left( a\right) \geq f\left( x\right)
\end{equation*}が成り立つことを意味します。また、\(f\)が最大点\(a\)に対して定める値\(f\left( a\right) \)を\(f\)の最大値(大域的最大値)と呼び、これを、\begin{equation*}\max_{x\in X}f\left( x\right)
\end{equation*}で表記します。また、\(f\)の最大点からなる集合を、\begin{equation*}\mathrm{argmax}_{x\in X}f\left( x\right)
\end{equation*}で表記します。

関数\(f:\mathbb{R} ^{n}\supset X\rightarrow \mathbb{R} \)が与えられたとき、定義域上の点\(a\in X\)が最小値(大域的最小点)であることとは、\begin{equation*}\exists a\in X,\ \forall x\in X:f\left( a\right) \leq f\left( x\right)
\end{equation*}が成り立つことを意味します。また、\(f\)が最小点\(a\)に対して定める値\(f\left( a\right) \)を\(f\)の最小値(大域的最小値)と呼び、これを、\begin{equation*}\min_{x\in X}f\left( x\right)
\end{equation*}で表記します。また、\(f\)の最大点からなる集合を、\begin{equation*}\mathrm{argamin}_{x\in X}f\left( x\right)
\end{equation*}で表記します。

一般に、関数\(f\)は最大点や最小点を持つとは限りませんが、仮に最大点や最小点を持つ場合、それはどのような条件を満たすのでしょうか。以下では関数の定義域上の点が最大点や最小点であるための必要条件を特定します。

関数\(f:\mathbb{R} ^{n}\supset X\rightarrow \mathbb{R} \)の定義域上の点\(a\in X\)が\(f\)の最大点であるものとします。さらに、この点\(a\)は以下の2つの条件を満たすものとします。1つ目の条件は、点\(a\)が\(f\)の定義域\(X\)の内点であるということです。この場合、\(f\)は点\(a\)を含め周辺の任意の点において定義されていることが保証されます。2つ目の条件は、\(f\)が点\(a\)において微分可能であるということです。一般に、最大点は極大点でもあるため、この内点\(a\)は極大点であるための1階の必要条件を満たします。

最小点についても同様の議論が成り立ちます。したがって以下の命題を得ます。

命題(内点が最大点や最小点であるための1階の必要条件)
関数\(f:\mathbb{R} ^{n}\supset X\rightarrow \mathbb{R} \)の定義域の内点\(a\in X^{i}\)を任意に選んだとき、\(f\)は点\(a\)において偏微分可能であるとともに、点\(a\)は\(f\)の最大点もしくは最小点であるならば、\begin{equation*}\nabla f\left( a\right) =0
\end{equation*}が成り立つ。すなわち、点\(a\)は停留点である。

 

関数の最大点や最小点を特定する方法

関数\(f\)の最大点は極大点でもあるため、極大点をすべて特定した上で、その中で\(f\left(x\right) \)の値を最大化するような点を特定すれば、それは必然的に最大点になります。最小値についても同様です。つまり、関数\(f\)の最小点は極小点でもあるため、極小点をすべて特定した上で、その中で\(f\left( x\right) \)の値を最小化するような点を特定すれば、それは必然的に最小点になります。

繰り返しになりますが、関数の極大点や極小点となり得る点の候補を特定する際には、停留点であるような定義域の内点と、関数が偏微分可能ではない定義域の内点に加え、定義域の要素であるようなすべての境界点を候補に加える必要があります。以上を踏まえると、関数の最大点や最小点を特定するためには以下の手順にしたがえばよいということになります。

  1. 関数の最大点や最小点が存在することを確認する。その際、最大値・最小値の定理などを利用する。
  2. 関数の定義域の内点の中でも、停留点をすべて特定する。
  3. 関数の定義域の内点の中でも、関数が偏微分可能ではない点をすべて特定する。
  4. 関数の定義域に含まれる境界点をすべて特定する。
  5. 以上のすべての点の中でも、\(f\left( x\right) \)の値を最大化する点が最大点であり、\(f\left( x\right) \)の最小化する点が最小点である。

 

演習問題

問題(関数の最大値・最小値)
関数\(f:\mathbb{R} ^{2}\supset \left[ -1,2\right] \times \left[ -1,2\right] \rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \left[ -1,2\right] \times \left[ -1,2\right] \)に対して、\begin{equation*}f\left( x,y\right) =x^{3}+y^{3}-x-y
\end{equation*}を定めるものとします。\(f\)のグラフは以下の通りです。

図:関数のグラフ
図:関数のグラフ

\(f\)の最大点と最小点は存在するでしょうか。存在する場合には具体的に求めてください。

解答を見る

プレミアム会員専用コンテンツです
ログイン】【会員登録

問題(関数の最大値・最小値)
関数\(f:\mathbb{R} ^{2}\rightarrow \mathbb{R} \)はそれぞれの\(\left( x,y\right) \in \mathbb{R} ^{2}\)に対して、\begin{equation*}f\left( x,y\right) =e^{-\left( x^{2}+y^{2}\right) }
\end{equation*}を定めるものとします。\(f\)のグラフは以下の通りです。

図:関数のグラフ
図:関数のグラフ

\(f\)の最大点と最小点は存在するでしょうか。存在する場合には具体的に求めてください。

解答を見る

プレミアム会員専用コンテンツです
ログイン】【会員登録

Share on twitter
Twitterで共有
Share on email
メールで共有
DISCUSSION

質問とコメント

プレミアム会員専用コンテンツです
ログイン】【会員登録

RELATED KNOWLEDGE

関連知識

最大値・最小値
1変数関数の大域的最適解

関数の値を最大化するような点が定義域上に存在する場合、そのような点を最大点や大域的最大点と呼びます。また、関数が最大点に対して定める値を最大値や大域的最大値と呼びます。

最大値・最小値
1変数関数の局所最適解

関数の値を最大化するような点が定義域上に存在しない場合でも、変数がとり得る値を限定することにより、その範囲内において関数の値を最大化するような点が存在する状況は起こり得ます。そのような点を極大点や局所的最大点と呼びます。また、関数が極大点に対して定める値を極大値や大域的最大値と呼びます。

1階の必要条件
1変数関数の最適化のための1階の必要条件

関数が定義域において局所最適解(極大点・極小点)を持つための1階の必要条件を明らかにするとともに、関数の大域的最適解(最小点・最大点)を具体的に求める方法について解説します。

2階の必要条件
1変数凸関数・凹関数の無制約最適化

1変数の凸関数を目的関数とする制約条件のない最小化問題や、1変数の凹関数を目的関数とする制約条件のない最大化問題を解く方法を解説します。

最大・最小
実数集合の最大値・最小値

実数集合 R の空でない部分集合 A について、そのある要素 a が A の任意の実数以上ならば、a を A の最大値と呼びます。また、a が A の任意の実数以下ならば、a を A の最小値と呼びます。

最大値・最小値
多変数関数の大域的最適解

多変数関数の値を最大化するような点が定義域上に存在する場合、そのような点を最大点や大域的最大点と呼びます。また、多変数関数が最大点に対して定める値を最大値や大域的最大値と呼びます。

最大値・最小値
多変数関数の局所最適解

多変数関数の値を最大化するような点が定義域上に存在しない場合でも、変数がとり得る値を限定することにより、その範囲内において関数の値を最大化するような点が存在する状況は起こり得ます。そのような点を極大点や局所的最大点と呼びます。また、関数が極大点に対して定める値を極大値や大域的最大値と呼びます。

凸関数・凹関数
多変数凸関数・凹関数の無制約最適化

多変数の凸関数を目的関数とする制約条件のない最小化問題や、多変数の凹関数を目的関数とする制約条件のない最大化問題を解く方法を解説します。

最大値・最小値
順序部分集合の最大元・最小元

非空な順序部分集合のある要素が、他の任意の要素以上である場合、それを最大元と呼びます。また、非空な順序部分集合のある要素が、他の任意の要素以下である場合、それを最小元と呼びます。

極大値・極小値
順序部分集合の極大元・極小元

非空な順序部分集合のある要素よりも大きい要素がその集合の中に存在しない場合、その要素を極大元と呼びます。また、非空な順序部分集合のある要素よりも小さい要素がその集合の中に存在しない場合、その要素を極小元と呼びます。