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

多変数関数(特に二変数関数)の極値判定法ヘッセ行列について解説します。

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

まずは結論です:

定理:多変数関数の極値判定法

多変数関数 f(x1,,xn)f(x_1 , \cdots , x_n) が点 p=(p1,,pn)p = (p_1 , \cdots, p_n) において,fx1(p)==fxn(p)=0f_{x_1} (p) = \cdots = f_{x_n} (p) = 0(偏微分がすべて 00)を満たし,さらに,

  • pp での ff のヘッセ行列が正定値である場合,極小値をとる。
  • pp での ff のヘッセ行列が負定値である場合,極大値をとる。
系:二変数関数の極値判定法

C2C^2 級二変数関数 f(x,y)f(x,y) が点 (x0,y0)(x_0,y_0) において,fx(x0,y0)=fy(x0,y0)=0f_x (x_0 , y_0) = f_y (x_0 , y_0) = 0 を満たすとする。

Δ(x0,y0)=fxx(x0,y0)fyy(x0,y0){fxy(x0,y0)}2\Delta (x_0,y_0) = f_{xx} (x_0,y_0) f_{yy} (x_0,y_0) - \{ f_{xy} (x_0,y_0) \}^2 とおいたとき,

  • Δ(x0,y0)>0\Delta (x_0,y_0) > 0fxx(x0,y0)>0f_{xx} (x_0,y_0) > 0 のとき極小
  • Δ(x0,y0)>0\Delta (x_0,y_0) > 0fxx(x0,y0)<0f_{xx} (x_0,y_0) < 0 のとき極大
  • Δ(x0,y0)<0\Delta (x_0,y_0) < 0 のとき極値をもたない

この記事の目標は,上記の意味を理解することです。

準備は大変なので 具体例 から読んでもいいでしょう。

ヘッセ行列と行列の正定値性

ヘッセ行列

ヘッセ行列(二階の偏導関数を並べた行列)について説明します。以下,この記事で関数 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 級のとき偏微分の順序は交換できるのでヘッセ行列は必ず対称行列になります。

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

正定値,負定値とは

正定値の定義

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

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

  2. HH の固有値が全て正

  3. 首座小行列(左上の k×kk \times k 行列 (1kn)(1 \le k \le n))の行列式が全て正。

首座小行列

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

行列のサイズが小さいときに正定値かどうかの判定をしたいときは3を使うのが楽です(固有値の計算はけっこう大変なので2は使いづらいです)。

極値

臨界点(停留点)

極値の定義の前に,極値の候補になり得る臨界点(停留点)を定義します。

臨界点とは「傾きが 00(すべての偏微分係数が 00)」の点です。

定義

多変数関数 f(x1,,xn)f (x_1, \cdots ,x_n)p=(p1,,pn)p = (p_1, \cdots , p_n) において {fx1(p1,,pn)=0fx2(p1,,pn)=0fxn(p1,,pn)=0\begin{cases} f_{x_1} (p_1 , \cdots , p_n) = 0\\ f_{x_2} (p_1 , \cdots , p_n) = 0\\ \quad \vdots \\ f_{x_n} (p_1 , \cdots , p_n) = 0 \end{cases} を満たすとき,pp臨界点(停留点)という。

極値の定義

極値判定をする前に極値の定義をしっかりと確認しましょう。

定義

多変数関数 f(x1,,xn)f (x_1, \cdots ,x_n)p=(p1,,pn)p = (p_1, \cdots , p_n) において

  1. 極大である とは,pp と十分近い任意の点 (x1,,xn)(x_1',\cdots , x_n') に対して f(x1,,xn)<f(p1,,pn) f(x_1',\cdots , x_n') < f(p_1, \cdots , p_n) となることを表す。
  2. 極小である とは,pp と十分近い任意の点 (x1,,xn)(x_1',\cdots , x_n') に対して f(x1,,xn)>f(p1,,pn) f(x_1',\cdots , x_n') > f(p_1, \cdots , p_n) となることを表す。

一旦,二変数で表すと

  • 十分近いを数式で表現するときは,十分小さい aa について (xp)2+(yq)2<a(x-p)^2 + (y-q)^2 < axp+yq<a|x-p| + |y-q| < a などと表現すると良いでしょう。

  • 文献によっては,極大の定義 f(x,y)<f(p,q)f(x',y') < f(p,q) に等号を含めず f(x,y)f(p,q)f(x',y') \leq f(p,q) とすることもあります。極小も同様です。

極値であれば停留点になります。よって極値を探す場合,まず停留点から探すことになります。

極値ではない停留点

停留点であっても極値を取らない場合があります。

直線・曲線を成すとき

pic1

鞍点

下のように,ある方向から見ると極小・ある方向から見ると極大になっている点を鞍点(サドルポイント)といいます。

pic2

極値判定の定理

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

  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かつ ヘッセ行列が負定値極大

さらに,

  1. その点で偏導関数の値が全て0かつ ヘッセ行列の固有値が正のものと負のものがある鞍点

なお,ヘッセ行列が上記のどれでもないとき,つまりヘッセ行列の行列式が 0 である(固有値に 0 がある) 場合は力技で極小か極大か,それともどちらでもないかを調べることになります。

固有値に 0 がある例

f(x,y)=x2f(x,y) = x^2 とします。

fx=2xf_x = 2xfy=0f_y = 0 です。P(0,0,0)\mathrm{P} (0,0,0) が極大・極小をとる点の候補です。

P\mathrm{P} でのヘッセ行列は (2000)\begin{pmatrix} 2&0\\0&0 \end{pmatrix} です。判定法からは極大・極小はわかりません。

z=f(x,y)z = f(x,y) は下図のようになります。P\mathrm{P} は,赤い曲線方向で見ると定数ですが,(等号を含めた定義では)極小です。

pic1

二変数の極値判定

二変数関数である場合は簡単に判定をすることができます。

二変数関数の極値判定法

C2C^2 級二変数関数 f(x,y)f(x,y) が点 (x0,y0)(x_0,y_0) において,fx(x0,y0)=fy(x0,y0)=0f_x (x_0 , y_0) = f_y (x_0 , y_0) = 0 を満たすとする。

Δ(x0,y0)=fxx(x0,y0)fyy(x0,y0){fxy(x0,y0)}2\Delta (x_0,y_0) = f_{xx} (x_0,y_0) f_{yy} (x_0,y_0) - \{ f_{xy} (x_0,y_0) \}^2 とおいたとき,

  • Δ(x0,y0)>0\Delta (x_0,y_0) > 0fxx(x0,y0)>0f_{xx} (x_0,y_0) > 0 のとき極小
  • Δ(x0,y0)>0\Delta (x_0,y_0) > 0fxx(x0,y0)<0f_{xx} (x_0,y_0) < 0 のとき極大
  • Δ(x0,y0)<0\Delta (x_0,y_0) < 0 のとき極値をもたない

このようにヘッセ行列を計算しなくとも判別ができます。

しかし本質的にはヘッセ行列の首座行列式を計算していることと何ら変わりありません。

証明

2×22 \times 2 行列の首座小行列は 1,11 , 1 成分元の行列の2つである。

ヘッセ行列の場合,fxx(x0,y0)f_{xx} (x_0,y_0) と元のヘッセ行列 HH の2つである。

またヘッセ行列は (fxx(x0,y0)fxy(x0,y0)fyx(x0,y0)fyy(x0,y0))\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} であるため,行列式は Δ=fxx(x0,y0)fyy(x0,y0){fxy(x0,y0)}2 \Delta = f_{xx} (x_0,y_0) f_{yy} (x_0,y_0) - \{ f_{xy} (x_0,y_0) \}^2 である。(今回 C2C^2 級を考えているため fxy=fyxf_{xy} = f_{yx} である)

  • 極小

このとき,ヘッセ行列は正定値である。これは首座行列式がすべて正であることと同値であった。

首座行列式は fxx(x0,y0)f_{xx} (x_0,y_0)Δ(x0,y0)\Delta (x_0,y_0) であるため,定理が従う。

  • 極大

このとき,ヘッセ行列は負定値である。H-H の首座行列式がすべて正であることと同値であった。

このとき正である値は fxx(x0,y0)-f_{xx} (x_0,y_0)Δ(x0,y0)\Delta (x_0,y_0) であるため,定理が従う。

2×22 \times 2 行列の場合,det(A)=detA\det (-A) = \det A である。(定義より分かる)

  • 鞍点

固有値が正負両方である場合である。今回は 2×22 \times 2 行列であるため,固有値は2つである。

よって,鞍点である場合とヘッセ行列の行列式が負であることが同値である。

具体例

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

例題

例題

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

極値の候補

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

{fx=3x2+2y1=0fy=2x+2y=0\begin{cases} f_x=3x^2+2y-1=0\\ f_y=2x+2y=0 \end{cases} より (x,y)=(1,1),(13,13)(x,y)=(1,-1),\left( -\dfrac{1}{3},\dfrac{1}{3} \right)

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

今後の計算のため,二階微分も計算しておく。

{fxx=6xfxy=fyx=2fyy=2\begin{cases} f_{xx} = 6x\\ f_{xy} = f_{yx} = 2\\ f_{yy} = 2 \end{cases}

(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 である。

判別式を使う方法

fxx(1,1)=6>0Δ(1,1)=fxx(1,1)fyy(1,1){fxy(1,1)}2=6222=8>0\begin{aligned} f_{xx} (1,-1) &= 6 > 0\\ \Delta (1,-1) &= f_{xx} (1,-1) f_{yy} (1,-1) - \{ f_{xy} (1,-1) \}^2 \\ &= 6 \cdot 2 - 2^2 \\ &= 8 > 0 \end{aligned} より極小値を取る。

(13,13)\left( - \dfrac{1}{3} , \dfrac{1}{3} \right) の判定

ヘッセ行列を見る方法

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

固有値を計算する。 HtI=2t222t=(2t)(2t)4=t28\begin{aligned} |H-tI| &= \begin{vmatrix} -2-t & 2\\ 2 & 2-t \end{vmatrix}\\ &= (-2-t)(2-t) - 4\\ &= t^2 - 8 \end{aligned} より固有値は ±22\pm 2 \sqrt{2} で正負どちらにもなる。

よって鞍点を取る。

判別式を計算する方法

Δ(13,13)=fxx(13,13)fyy(13,13){fxy(13,13)}2=2222=8<0\begin{aligned} \Delta \left( -\dfrac{1}{3},\dfrac{1}{3} \right) &= f_{xx} \left( -\dfrac{1}{3},\dfrac{1}{3} \right) f_{yy} \left( -\dfrac{1}{3},\dfrac{1}{3} \right) \\ &\qquad - \left\{ f_{xy} \left( -\dfrac{1}{3},\dfrac{1}{3} \right) \right\}^2 \\ &= -2 \cdot 2 - 2^2 \\ &= -8 < 0 \end{aligned} より鞍点を取る。

ある方向からは極大・ある方向からは極小であることを具体的に計算してみます。

実際に鞍点であることを見る方法

平面 x+y=0x+y=0 上で f(x,y)f(x,y)x3x2xx^3 - x^2 - x となる。これは x=13x = -\dfrac{1}{3} で極大値を取る。

一方,平面 xy=23x-y= -\dfrac{2}{3} 上で f(x,y)f(x,y)x3+3x2+53x+49x^3 + 3x^2 + \dfrac{5}{3} x + \dfrac{4}{9} となる。これは x=13x = -\dfrac{1}{3} で極小値を取る。

よって f(x,y)f(x,y)(x,y)=(13,13)(x,y) = \left( -\dfrac{1}{3}, \dfrac{1}{3} \right) で鞍点になる。

正定値・負定値の補足

質問

(2222)\begin{pmatrix}-2&2\\2&2\end{pmatrix} の首座小行列式はそれぞれ 2-28-8 であるから,この行列は負定値なのでは?

よくあるミスです。

HH が負定値であるとは,H-H が正定値であるという定義でした。

(2222)=(2222)- \begin{pmatrix}-2&2\\2&2\end{pmatrix} = \begin{pmatrix}2&-2\\-2&-2\end{pmatrix} の首座小行列式は,それぞれ 228-8 です。

よってこの行列は正定値でも負定値でもありません。

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