ヘッセ行列で関数の極値判定ができる理由

# 問題設定

$\mathbb{R}^2$の上で定義される2変数関数$f(x, y)$について，極値の候補となる点$(a, b)$が見つかったとする．

すなわち

$\frac{\partial f}{\partial x}(a, b) = \frac{\partial f}{\partial y}(a, b) = 0$

のとき点$(a, b)$が極値であるか鞍点であるかを判定したい．

# 解法

この問題を解く方法は大きく分けて3段階で表される．

1. 関数$f(x, y)$を$(a, b)$の周辺で2次関数で近似する
2. 2次近似したものを適当な場所で水平に輪切りにする
3. 断面が楕円だったら$(a, b)$は極値，断面が双曲線なら$(a, b)$は鞍点だと判定できる

## 1. fの二次近似を求める

テイラー展開を使えば$f$の2次近似はすぐに導くことができる．

微小量$h, k \in \mathbb{R}$について，$(a, b)$から$(h, k)$だけずれた場所の関数$f$の値は次の式で近似できる．

$$
f(a+h, b+k) \simeq \sum_{t=1}^{n} \frac{1}{t!}(h\frac{\partial}{\partial x} + k\frac{\partial}{\partial y})^t f(a, b)
$$

2次の項まで展開すると

$$
f(a+h, b+k) \simeq f(a, b) + hf_{x}(a, b) + kf_{y}(a, b) + \frac{1}{2}\left[h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b)\right]
$$

である．

しかし問題の前提より

$$
f_{x}(a, b) = f_{y}(a, b) = 0
$$

なので，近似式から1次の項が消え

$$
f(a+h, b+k) \simeq f(a, b) + \frac{1}{2}\left[h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b)\right]
$$

となる．

## 2. 輪切りにする

さて，$(a, b)$の周辺で$f(x, y)$の二次近似を求めることができたため，これを輪切りにしてみよう．

$f(x, y)$の2次近似の値がある定数$c_1 \in \mathbb{R}$になる場所で輪切りにすると、断面は

$$
f(a, b) + \frac{1}{2}\left[h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b)\right] = c_1
$$

と表される．

$f(a, b)$は定数なので移項してまとめてしまおう．

$$
h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b) = 2\left[c_1-f(a, b)\right]
$$

さらに

$$
c := 2\left[c_1-f(a, b)\right]
$$

とおけば，断面は

$$
h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b) = c
$$

という1本の式で表されることになる．以降これを「断面の式」と呼ぶことにしよう．

## 3. 断面の形を見極める

### 3.1 極値になる条件

さて，

$$
f_{xx}(a, b),
f_{xy}(a, b),
f_{yx}(a, b),
f_{yy}(a, b)
$$

はいずれも定数なので，断面の式

$$
h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b) = c
$$

は$h$と$k$に関する2次式とみなすことができる．

断面の式が2次式とみなされるならば，__断面の形は楕円または双曲線になる．__

__もし断面が楕円なら$f(a, b)$は極値，双曲線なら$f(a, b)$は鞍点である．__

さて，xy平面上の楕円と双曲線はどちらも1つの式で表すことができる．

$$
px^2+qy^2=1
$$

$p$と$q$の符号が同じであれば楕円，符号が違っていれば双曲線である．

断面の式と見比べてみよう．

$$
h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b) = c
$$

第2項が邪魔をするため，この式からでは断面が楕円なのか双曲線なのかを判定することはできない．

もし断面の式を、適当な変数$\lambda_1, \lambda_2, u, v \in \mathbb{R}$を使って

$$
\begin{align}
h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b) 
&= \lambda_1 u^2 + \lambda_2 v^2 \\\\
&= c
\end{align}
$$

と書き替えることができれば，これは

$$
px^2+qy^2=1
$$

と全く同じ形になるため，

「$\lambda_1$と$\lambda_2$の符号が同じならば楕円、符号が違っていれば双曲線」

と判定することができる．

では実際に書き換えてみよう．

### 行列の2次形式を使って断面の式を書き換える
#### 断面の式の2次形式による表現

さて，どうすれば断面の式

$$
\begin{aligned}
h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b) = c
\end{aligned}
$$

を，都合のいい形

$$
\lambda_1 u^2 + \lambda_2 v^2 = c
$$

に変換することができるだろうか．

断面の式を行列の2次形式で表現し，出てきた行列を対角化すると，これが可能になる．[^1]


$$
\begin{align}
h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b) &=
\begin{bmatrix}
h & k
\end{bmatrix}
\begin{bmatrix}
f_{xx} & f_{xy} \\\\
f_{yx} & f_{yy}
\end{bmatrix}
\begin{bmatrix}
h \\\\ k
\end{bmatrix} \\\\
&= \mathbf{v}^TH\mathbf{v}
\end{align}
$$


ここで真ん中の行列$H$は$f$のヘッセ行列

$$
H = 
\begin{bmatrix}
f_{xx} & f_{xy} \\\\
f_{yx} & f_{yy}
\end{bmatrix}
$$

であり，ベクトル$\mathbf{v}$は

$$
\mathbf{v} =
\begin{bmatrix}
h \\\\ k
\end{bmatrix}
$$

である．

#### 対角化による変形

ではヘッセ行列$H$を対角化してみよう．
これは直交行列

$$
P \in \mathbb{R}^{2 \times 2},\, P^{-1}=P^{\top}
$$

と，対角行列

$$
\Lambda = \begin{bmatrix}
 \lambda_1 & 0 \\\\
 0 & \lambda_2
\end{bmatrix}
$$

を用いて

$$
\begin{align}
\Lambda &= P^{-1}HP =P^{\top}HP \\\\
H &= P \Lambda P^{-1} = P \Lambda P^{\top}
\end{align}
$$

と表される．

次に，$H$を対角化した結果を用いて断面の式を変形してみよう．

$$
\begin{align}
h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b) &= \mathbf{v}^{\top}H\mathbf{v} \\\\
&= \mathbf{v}^{\top} P \Lambda P^{\top} \mathbf{v} \\\\
&= (P^{\top}\mathbf{v})^{\top} \Lambda P^{\top} \mathbf{v}
\end{align}
$$

さらに，ベクトル$\mathbf{u} = (u, v)^{\top}$を

$$
\mathbf{u} = P^{\top}\mathbf{v}
$$

と定義すれば，断面の式は

$$
\begin{align}
h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b) 
&= (P^{\top}\mathbf{v})^{\top} \Lambda P^{\top} \mathbf{v} \\\\
&= \mathbf{u}^{\top} \Lambda \mathbf{u} \\\\
&= \lambda_1 u^2 + \lambda_2 v^2 \\\\
&= c
\end{align}
$$

というきれいな形になった．

これで「$\lambda_1$と$\lambda_2$の符号が同じならば楕円，符号が違っていれば双曲線」という判定を行うことができる．

$\lambda_1$と$\lambda_2$の符号が同じならば断面は楕円であり，$(a, b)$は極値
$\lambda_1$と$\lambda_2$の符号が異なるならば断面は双曲線であり，$(a, b)$は鞍点

# まとめ
__1. 関数$f(x, y)$を$(a, b)$の周辺で2次関数で近似する__

$f$を$(a, b)$のまわりでテイラー展開する．ただし1次の項が消えるので，近似式は

$$
f(a+h, b+k) \simeq f(a, b) + \frac{1}{2}\left[h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b)\right]
$$

となる．

__2. 2次近似したものを適当な場所で水平に輪切りにする__

近似したものを定数$c$とおく．$f(a, b)$も定数なので$c$に含めてしまおう．

$$
h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b) = c
$$

__3. 断面の式をヘッセ行列$H$を使って表記する__

$$
\begin{align}
h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b) &=
\begin{bmatrix}
h & k
\end{bmatrix}
\begin{bmatrix}
f_{xx} & f_{xy} \\\\
f_{yx} & f_{yy}
\end{bmatrix}
\begin{bmatrix}
h \\\\ k
\end{bmatrix} \\\\
&= \mathbf{v}^TH\mathbf{v}
\end{align}
$$

__4. ヘッセ行列$H$を対角化する__

$$
\begin{align}
\Lambda &= P^{-1}HP =P^{\top}HP \\\\
H &= P \Lambda P^{-1} = P \Lambda P^{\top}
\end{align}
$$

__5. 断面の式を書き換え，断面の形を判定する__
$$
\begin{align}
h^2f_{xx}(a, b) + 2hkf_{xy}(a, b) + k^2f_{yy}(a, b) 
&= (P^{\top}\mathbf{v})^{\top} \Lambda P^{\top} \mathbf{v} \\\\
&= \mathbf{u}^{\top} \Lambda \mathbf{u} \\\\
&= \lambda_1 u^2 + \lambda_2 v^2 \\\\
&= c
\end{align}
$$

ここで$\lambda_1,\lambda_2$はともにヘッセ行列の固有値である．

$\lambda_1\lambda_2 > 0$ならば断面は楕円 (すなわち$(a, b)$は極値)
$\lambda_1\lambda_2 < 0$ならば断面は双曲線 (すなわち$(a, b)$は鞍点)

というふうに判定を行うことができる．

## 参考資料

* [2次形式の微分の参考資料](http://www.wakayama-u.ac.jp/~chen/education/adv2004/lec06.pdf)

## 注釈

[^1]: 愚直に展開すると$\begin{bmatrix} h & k \end{bmatrix} \begin{bmatrix} f_{xx} & f_{xy} \\\\ f_{yx} & f_{yy} \end{bmatrix} \begin{bmatrix} h \\\\ k \end{bmatrix} = h^2f_{xx} + hkf_{yx} + hkf_{xy} + f_{yy}$ ですが，$f$が$C^2$級ならば$f_{xy} = f_{yx}$が成立するため，やはり$h^2f_{xx} + hkf_{yx} + hkf_{xy} + k^2f_{yy} = h^2f_{xx} + 2hkf_{xy} + k^2f_{yy}$となります．