極値と鞍点の計算方法

こんにちはコーヤです。

このページでは、2変数関数の極値の計算方法を勉強します。2変数関数では極値に似た鞍点という点が存在し、線形代数の知識を使うと極値と鞍点を判定できます。

停留点の条件

2変数関数f(x,y)が点(a,b)で極値を取る必要条件は、1変数関数のときと同様に1階導関数を用いて

fx(a,b)=fy(a,b)=0

となり、これを満たす点を停留点といいます。

停留点には極大値、極小値、鞍点、それ以外の4種類の点があります。

極大値と極小値は1変数関数のときと同じイメージです。どの方向から見ても極値の点を境目に1階導関数の符号が変化します。

鞍点は1変数関数のときは登場しませんでした。ある方向から見ると極大値っぽく見えても別の方向から見ると極小値っぽく見える点のことです。

それ以外の点について、1変数関数y=x3x=0の点をイメージすれば伝わるかと思います。1階導関数の値は0になるものの、極値とも鞍点とも言えない点があります。

停留点の判定方法

極大値、極小値、鞍点の判定方法は、以下のヘッセ行列Hを用います。

H=(fxx(a,b)fxy(a,b)fyx(a,b)fyy(a,b))

この行列式detH

  • detH>0なら極値
    • fxx(a,b)>0もしくはfyy(a,b)>0なら極小値
    • fxx(a,b)<0もしくはfyy(a,b)<0なら極大値
  • detH<0なら鞍点
  • detH=0のときは判定不能

となります。

detHのことを「ヘッセシアン」といいます。

極値と鞍点の計算3ステップ

それでは極値と鞍点の計算の具体例を見ていきます。3ステップです。

  1. 停留点を求める
  2. ヘッセシアンを求める
  3. 極値か鞍点か判定する

以下の2変数関数f(x,y)を計算します。

f(x,y)=3x26xy+y3

ステップ1. 停留点を求める

1階偏導関数を計算して

fx(x,y)=6x6yfy(x,y)=6x+3y2

となります。

fx(x,y)=6x6y=0

よりx=yです。これをfy(x,y)=0に代入して

0=fy(x,y)=6x+3y2=6y+3y2=3y(y2)

これよりy=0,2となります。

x=yの条件と合わせて、停留点は(x,y)=(0,0),(2,2)の2点です。

ステップ2. ヘッセシアンを求める

2階偏導関数を計算して

fxx(x,y)=6fxy(x,y)=6fyx(x,y)=6fyy(x,y)=6y

となります。ヘッセシアンは

detH=|fxx(x,y)fxy(x,y)fyx(x,y)fyy(x,y)|=|6666y|=36(y1)

となります。

ステップ3. 極値か鞍点か判定する

停留点(x,y)=(0,0),(2,2)の2点それぞれで判定します。

(x,y)=(0,0)のとき、ヘッセシアンは

detH=36(y1)=36(01)=36

detH<0なので鞍点となります。

(x,y)=(2,2)のとき、ヘッセシアンは

detH=36(y1)=36(21)=36

detH>0なので極値となります。fxx(2,2)=6>0なので極小値です。

判定方法の導出

ヘッセシアンで極値や鞍点が判定でき、fxxfyyの符号で極大極小の判定ができる理由について考えます。

(a,b)が停留点となるとき、f(a,b)付近でf(x,y)を切ったときの断面図を考えると

図のように、停留点が極値だった場合の断面図は楕円、停留点が鞍点だった場合の断面図は双曲線、というふうに判定できます。

断面図の式が計算しやすくなるようにf(x,y)をテイラー展開で近似します。2次の項までテイラー展開すると

f(x,y)f(a,b)+fx(a,b)(xa)+fy(a,b)(yb)+12{fxx(a,b)(xa)2+2fxy(a,b)(xa)(yb)+fyy(a,b)(yb)2}

ここで点(a,b)が停留点なので以下の条件を満たします。

fx(a,b)=fy(a,b)=0

これをテイラー展開の式へ代入して

f(x,y)f(a,b)+12{fxx(a,b)(xa)2+2fxy(a,b)(xa)(yb)+fyy(a,b)(yb)2}

となります。ここで式を見やすくするために

P=fxx(a,b)Q=fxy(a,b)R=fyy(a,b)

とすると

(1)f(x,y)f(a,b)+12{P(xa)2+2Q(xa)(yb)+R(yb)2}

と書けます。この2変数関数のf(a,b)付近での断面図を考えます。

切る平面の座標ですが、適当な定数cを用いて

z=12c+f(a,b)

で切るとします。その断面図の式は

12c+f(a,b)=f(a,b)+12{P(xa)2+2Q(xa)(yb)+R(yb)2}

と書けます。両辺を整理して

c=P(xa)2+2Q(xa)(yb)+R(yb)2

これが断面図の式です。この関数が楕円か双曲線化を判定すればゴールです。

断面図の式がどんな図形か見分けるために、主軸変換を行って式を見やすくします。

断面図の式を対称行列を用いて書くと

(2)c=(xayb)(PQQR)(xayb)

となります。ここで対称行列の対角化計算を行い

U=(λ100λ2)U=(u1u2u3u4)

このように表される対角行列Dと直交行列Uを用いて

tU(PQQR)U=D

が成り立つとします。

次に変換前のx,y軸と変換後のx,y軸の関係を

(xayb)=U(xy)

とすると、式(2)は

c=(xayb)(PQQR)(xayb)=(xy)tU(PQQR)U(xy)=(xy)D(xy)(3)=λ1x2+λ2y2

と変形できます。

式(3)はλ1λ2の積がλ1λ2>0のとき楕円、λ1λ2<0のとき双曲線となります。

以上で楕円と双曲線の判定ができたので、λ1λ2がどのような値か計算して楕円か双曲線かの条件を求めます。

λ1,λ2は対角化計算を行ったあとの対角行列Dの成分の値でしたので

|PλQQRλ|=(Pλ)(Rλ)Q2=λ2(P+R)λ+PRQ2

この式を満たすλλ1λ2です。解と係数の関係より

λ1λ2=PRQ2=|PQQR|=|fxx(a,b)fxy(a,b)fxy(a,b)fyy(a,b)|=detH

以上より

detH=λ1λ2>0

のとき断面図は楕円になるのでf(a,b)は極値になります。

detH=λ1λ2<0

のとき断面図は双曲線になるのでf(a,b)は鞍点になります。

次に極大極小の判定について考えます。

式(1)をy=bの平面で切ったときの断面図の式は

f(x,b)f(a,b)+12{P(xa)2}

これはxの1変数関数なので、普段どおりの極大極小の判定と同じことができます。

2階導関数を計算して

f(x,b)f(a,b)+12{P(xa)2}f(x,b)P(xa)f(x,b)P

これよりP>0なら断面図は下に凸なのでf(a,b)は極小値となり、P<0なら断面図は上に凸なのでf(a,b)は極大値となります。

P=fxx(a,b)

でしたので、fxx(a,b)>0なら断面図は下に凸なのでf(a,b)は極小値となり、fxx(a,b)<0なら断面図は上に凸なのでf(a,b)は極大値となります。

式(1)をy=bの平面で切ったときの断面図を計算して条件を出しました。

式(1)をx=aの平面で切ったときの断面図を計算して条件を出すと、fyy(a,b)の符号によって極大極小の条件が求まります。

fyy(a,b)>0ならf(a,b)は極小値となり、fyy(a,b)<0ならf(a,b)は極大値となります。

ヘッセシアンでは判定不能の場合の判定方法

前述の通りdetH=0のときはヘッセシアンでは極値か鞍点か判定不能です。

detH=0となる具体例を使って、個別に調べる方法を勉強します。

以下の2変数関数f(x,y)を計算します。

f(x,y)=x4x22xy+y4y2

普段どおりヘッセシアンを求めて、detH0となる停留点はヘッセシアンで判定しましょう。detH=0となる停留点だけ個別に調べます。

計算3ステップを再掲します。detH=0の場合はステップ4に「判定不能の点を調べる」が追加しましょう。

  1. 停留点を求める
  2. ヘッセシアンを求める
  3. 極値か鞍点か判定する
  4. 判定不能の点を調べる
ステップ1. 停留点を求める

1階偏導関数を計算して

fx(x,y)=4x32x2yfy(x,y)=2x+4y32y

となります。

fx(x,y)=4x32x2y=0

これよりy=2x3xです。これをfy(x,y)=0に代入して

0=fy(x,y)=2x+4y32y=2x+4(2x3x)32(2x3x)=8x912x7+6x52x3=2x3(x1)(x+1)(4x42x2+1)

ここで最後の項を平方完成すると

4x42x2+1=4{(x214)2+1516}>0

となるので、4x42x2+1=0を満たすxは存在しません。つまり

2x3(x1)(x+1)(4x42x2+1)=0

を満たすxx=1,0,1となります。

y=2x3xの条件と合わせて、停留点は(x,y)=(1,1),(0,0),(1,1)の3点です。

ステップ2. ヘッセシアンを求める

2階偏導関数を計算して

fxx(x,y)=12x22fxy(x,y)=2fyx(x,y)=2fyy(x,y)=12y22

となります。ヘッセシアンは

detH=|fxx(x,y)fxy(x,y)fyx(x,y)fyy(x,y)|=|12x222212y22|=24(6x2y2x2y2)

となります。

ステップ3. 極値か鞍点か判定する

停留点(x,y)=(1,1),(0,0),(1,1)の3点それぞれで判定します。

(x,y)=(1,1)のとき、ヘッセシアンは

detH=24(6x2y2x2y2)=96

detH>0なので極値となります。fxx(1,1)=10>0なので極小値です。

(x,y)=(0,0)のとき、ヘッセシアンは

detH=24(6x2y2x2y2)=0

detH=0なので判定不能となります。ステップ4で調べましょう。

(x,y)=(1,1)のとき、ヘッセシアンは

detH=24(6x2y2x2y2)=96

detH>0なので極値となります。fxx(1,1)=10>0なので極小値です。

ステップ4. 判定不能の点を調べる

(x,y)=(0,0)のときが判定不能なので、個別に調査していきます。

鞍点はある方向から見ると極大値っぽく見えるが別の方向から見ると極小値っぽく見える点のことでした。

(x,y)=(0,0)が極大値っぽく見える方向と極小値っぽく見える方向がないか探してみて、見つかれば(x,y)=(0,0)は鞍点だと言えます。

それでは計算しましょう。

f(x,y)x=yの平面で切った断面図の式は

f(x,x)=2x44x2

となります。これはxの1変数関数なので、2階導関数を利用してグラフを書きます。

f(x,x)=2x44x2f(x,x)=8x38x=8x(x1)(x+1)f(x,x)=24x28=8(3x21)

グラフよりx=0の点は極大値です。

つまりf(x,y)x=yの平面で切ったとき、f(0,0)は極大値っぽく見えることが分かりました。

次にf(x,y)x=yの平面で切った断面図の式は

f(x,x)=2x4

となります。これはxの1変数関数なので、2階導関数を利用してグラフを書きます。

f(x,x)=2x4f(x,x)=8x3f(x,x)=24x2

グラフよりx=0の点は極小値です。

つまりf(x,y)x=yの平面で切ったとき、f(0,0)は極小値っぽく見えることが分かりました。

以上の結果よりf(0,0)は極大値っぽく見える方向と極小値っぽく見える方向があるため鞍点だと判定できます。

なお、f(x,y)=x4x22xy+y4y2は以下のような曲面です。

まとめ

2変数関数の極値と鞍点の判定はヘッセシアンdetHの値で判定できます。

  • detH>0なら極値
    • fxx(a,b)>0もしくはfyy(a,b)>0なら極小値
    • fxx(a,b)<0もしくはfyy(a,b)<0なら極大値
  • detH<0なら鞍点
  • detH=0のときは判定不能

計算方法は以下の3ステップです。

  1. 停留点を求める
  2. ヘッセシアンを求める
  3. 極値か鞍点か判定する

コメント欄