多変数関数の極値判定とヘッセ行列

更新日時 2021/03/07

ヘッセ行列について解説します。ヘッセ行列を使うと,多変数関数が極値を取るための必要条件,極大点・極小点であるための十分条件がわかります。

目次
  • 準備1:ヘッセ行列とは

  • 準備2:正定値,負定値とは

  • 極値判定の定理

  • 具体例

準備1:ヘッセ行列とは

まずはヘッセ行列(二階の偏導関数を並べた行列)について説明します。以下,この記事で関数 ffC2C^2 級(二階連続微分可能)とします。

ヘッセ行列の定義

nn 変数関数 f(x1,x2,,xn)f(x_1,x_2,\cdots, x_n) に対して,
ijij 成分が 2fxixj\dfrac{\partial^2 f}{\partial x_i\partial x_j} であるような n×nn\times n 行列をヘッセ行列と言う。

例題

f(x,y)=x3+2xy+y2xf(x,y)=x^3+2xy+y^2-x のヘッセ行列を求めよ。

解答

ffxx で偏微分すると,fx=3x2+2y1f_x=3x^2+2y-1

yy で偏微分すると,fy=2x+2yf_y=2x+2y

これらを用いて二階の偏導関数を求める:

fxx=6x,fxy=fyx=2,fyy=2f_{xx}=6x,\:f_{xy}=f_{yx}=2,\:f_{yy}=2

よってヘッセ行列は (6x222)\begin{pmatrix}6x&2\\2&2\end{pmatrix}

注: ffC2C^2 級のとき偏微分の順序は交換できるのでヘッセ行列は必ず対称行列になります。

準備2:正定値,負定値とは

正定値の定義

n×nn\times n 実対称行列 HH に対して以下の条件は全て同値である。このいずれか(したがって全て)を満たす行列を正定値行列と言う。

  1. 全ての(00 ベクトルではない)nn 次元縦ベクトル xundefined\overrightarrow{x} に対して xundefinedHxundefined\overrightarrow{x}^{\top}H\overrightarrow{x} が正

  2. HH の固有値が全て正

  3. 首座小行列(左上のかたまり,全部で nn 個ある)の行列式が全て正。

首座小行列

なお,H-H が正定値のとき HH負定値と言います。

また,行列のサイズが小さいときに正定値かどうかの判定をしたいときは3を使うのが楽です(記事末の例題でも3を使う)。

極値判定の定理

一変数関数の場合,以下が成立しました。

1.極値の必要条件f(x)f(x)x=ax=a で極大または極小→ f(a)=0f'(a)=0

2.極小の十分条件f(a)=0f'(a)=0 かつ f(a)>0f''(a) > 0x=ax=a で極小

3.極大の十分条件f(a)=0f'(a)=0 かつ f(a)<0f''(a) <0x=ax=a で極大

多変数関数の場合も同様な定理が成立します!

  1. 極大または極小→その点で偏導関数の値が全て0

  2. その点で偏導関数の値が全て0かつ ヘッセ行列が正定値→極小

  3. その点で偏導関数の値が全て0かつ ヘッセ行列が負定値→極大

具体例

実際に二変数関数の極値を求めてみます。

例題

f(x,y)=x3+2xy+y2xf(x,y)=x^3+2xy+y^2-x の極値をできる限り求めよ。

解答

まず,極値のための必要条件として偏微分=0を解く:

fx=3x2+2y1=0f_x=3x^2+2y-1=0

fy=2x+2y=0f_y=2x+2y=0

より (x,y)=(1,1),(13,13)(x,y)=(1,-1),(-\dfrac{1}{3},\dfrac{1}{3})

つまり極値の候補は二つ。

(1,1)(1,-1) について

ヘッセ行列(冒頭で求めた)は (1,1)(1,-1) では (6222)\begin{pmatrix}6&2\\2&2\end{pmatrix}

これは以下のように正定値であることが分かる:

一つ目の首座小行列式(1111 成分の値)は 6>06 > 0

二つ目の首座小行列式は 6222=8>06\cdot 2-2\cdot 2=8 > 0

よって,(1,1)(1,-1) は極小点であり極小値は 1-1

(13,13)(-\dfrac{1}{3},\dfrac{1}{3}) について

ヘッセ行列は (13,13)(-\dfrac{1}{3},\dfrac{1}{3}) では (2222)\begin{pmatrix}-2&2\\2&2\end{pmatrix}

これは正定値でも負定値でもない。よってこの定理だけでは極値かどうかは分からない(実は極大でも極小でもない鞍点と呼ばれる点)。

なお,ヘッセ行列の行列式のことをヘッシアンと言うことがあります。

判別式を用いた説明もときどき見かけますが,二変数関数のときにしか通用しないので私はあまり好きではありません。