微分積分⑬ ヘッセ行列による極値判定
ヘッセ行列による極値判定
ヘッセ行列の定義
ヘッセ行列
スカラー値関数$f$について、以下の行列$H$を関数$f$のヘッセ行列といいます。
\begin{align*}
H=[H_{ij}]=\left[\dfrac{\partial f}{\partial x_i \partial x_j}\right]
\end{align*}
正定値行列と負定値行列
正定値行列
$A$を$n$$\times $$n$の行列として、零ベクトルでない任意の$n$成分の縦ベクトル$\boldsymbol{x}$に対して、
\begin{align*}
{}^t\boldsymbol{x}A\boldsymbol{x}\gt 0
\end{align*}
を満たす行列を正定値行列といい、$-A$が正定値行列の場合、負定値行列といいます。
ヘッセ行列式による極値の判定方法
ヘッセ行列式による判定法
$f$を$C^{n+1}$級の関数とします。ある点で、すべての1次偏導関数が0になる場合、その点が極値の候補となり、
\begin{align*}
\text{ヘッセ行列式が正定値}&\Rightarrow \text{極小} \\
\text{ヘッセ行列が負定値}&\Rightarrow \text{極大} \\
\text{ヘッセ行列が正定値でも負定値でもない}&\Rightarrow \text{極大でも極小でもない(鞍点)}
\end{align*}
ヘッセ行列式による判定方法の説明
一般の場合に証明するのは結構難しいので、$n=2$の場合に証明します。点$(x_0,y_0)$で一次偏導関数が0となるとします。まず、この点周りに関数$f(x,y)$を2次の項までテイラー展開します。ただし、$f_{xy}$$=f_{yx}$が成り立つとしています。
\begin{align*}
f(x,y)\approx f(x_0,y_0)+f_x(x_0,y_0)(x-x_0)+f_y(x_0,y_0)(y-y_0)+\dfrac{1}{2}\left\{f_{xx}(x_0,y_0)(x-x_0)^2+f_{xy}(x_0,y_0)(x-x_0)(y-y_0)+f_{yy}(x_0,y_0)(y-y_0)^2\right\}
\end{align*}
これを線形代数の2次形式という表し方をつかって、
\begin{align*}
f(x,y)\approx f(x_0,y_0)+f_x(x_0,y_0)(x-x_0)+f_y(x_0,y_0)(y-y_0)+
\begin{pmatrix}
x-x_0 & y-y_0
\end{pmatrix}
\begin{pmatrix}
f_{xx}(x_0,y_0) & f_{xy}(x_0,y_0) \\
f_{yx}(x_0,y_0) & f_{yy}(x_0,y_0)
\end{pmatrix}
\begin{pmatrix}
x-x_0 \\
y-y_0
\end{pmatrix}
\end{align*}
さて、点$(x_0,y_0)$で一次偏導関数は0になるので、
\begin{align*}
f(x,y)\approx f(x_0,y_0)+
\begin{pmatrix}
x-x_0 & y-y_0
\end{pmatrix}
\begin{pmatrix}
f_{xx}(x_0,y_0) & f_{xy}(x_0,y_0) \\
f_{yx}(x_0,y_0) & f_{yy}(x_0,y_0)
\end{pmatrix}
\begin{pmatrix}
x-x_0 \\
y-y_0
\end{pmatrix}
\end{align*}
ここで、ヘッセ行列$H(x,y)$を
\begin{align*}
H(x_0,y_0)=
\begin{pmatrix}
f_{xx}(x_0,y_0) & f_{xy}(x_0,y_0) \\
f_{yx}(x_0,y_0) & f_{yy}(x_0,y_0)
\end{pmatrix}
\end{align*}
とおいて、また、
\begin{align*}
\boldsymbol{x}=
\begin{pmatrix}
x-x_0 \\
y-y_0
\end{pmatrix}
\end{align*}
とすると、
\begin{align*}
f(x,y)\approx f(x_0,y_0)+{}^t\boldsymbol{x}H(x_0,y_0)\boldsymbol{x}
\end{align*}
ここで、$H(x_0,y_0)$が正定値なら、任意の零ベクトルでない縦ベクトル$\boldsymbol{x}$に対して、
\begin{align*}
{}^t\boldsymbol{x}H(x_0,y_0)\boldsymbol{x}\gt 0
\end{align*}
なのでした。零ベクトルになるときも含めると、
\begin{align*}
{}^t\boldsymbol{x}H(x_0,y_0)\boldsymbol{x}\geq 0
\end{align*}
等号成立は$\boldsymbol{x}$が零ベクトルのときです。というわけで、点$(x_0,y_0)$の近傍で、
\begin{align*}
f(x,y)\approx f(x_0,y_0)+{}^t\boldsymbol{x}H(x_0,y_0)\boldsymbol{x}\geq f(x_0,y_0)
\end{align*}
となり、ヘッセ行列が正定値行列のとき、この点で極小を取るといえます。
よって、逆にヘッセ行列$H(x_0,y_0)$が負定値なら、$-H(x_0,y_0)$が正定値行列になるので、
\begin{align*}
f(x,y)\approx f(x_0,y_0)-{}^t\boldsymbol{x}\{-H(x_0,y_0)\}\boldsymbol{x}\leq f(x_0,y_0)
\end{align*}
となり、極大と分かります。では、正定値でも不定値でもない場合は?というと$\boldsymbol{x}$の取り方によって、符号も値も変わってしまうので極値とはいえません。これを鞍点といいます。
ヘッセ行列による極値判定例題
たとえば、以下のような関数$f(x,y)$を考えましょう。\begin{align*}
f(x,y)=x^3-3x+y^3-2y
\end{align*}
\begin{align*}
f_x&=3x^2-3 \\
f_y&=3y^2-2
\end{align*}
よって、$f_x$$=f_y$$=0$となる極値の候補点は、
\begin{align*}
\left(\pm 1,\pm \dfrac{\sqrt{6}}{3}\right)
\end{align*}
の4点ですね。さて、まずは一般の座標に対してヘッセ行列を計算します。
\begin{align*}
H(x,y)&=
\begin{vmatrix}
f_{xx} & f_{xy} \\
f_{yx} & f_{yy}
\end{vmatrix} \\
&=
\begin{vmatrix}
6x & 0 \\
0 & 6y
\end{vmatrix}
\end{align*}
さて、先ほど求めた4点のうち、$H$が正定値行列の点は極小、$H$が負定値行列の点は極大、どちらでもない場合には、鞍点(極値ではない)となるのでした。
正定値行列は首座行列式がすべて正という性質がありました。つまり、$H$が正定値行列であることを示したければ、
\begin{align*}
f_{xx}=6x\gt 0\text{かつ}\det{H(x,y)}=36xy\gt 0
\end{align*}
となります。以上より、$(1,\sqrt{6}/3)$は極小となります。また、$H$が負定値、つまり、$-H$が正定値になる場合、
\begin{align*}
-f_{xx}=-6x\gt 0\text{かつ}\det{\{-H(x,y)\}}=-36xy\gt 0
\end{align*}
の場合に極大になります。つまり、$(-1,-\sqrt{6}/3)$は極大になります。残りの二点は、ヘッセ行列が正定値でも負定値でもないので、鞍点になります。以下の図がこの関数のグラフです。
鞍点は字の通り馬の鞍のような形をしています。