Hessianを計算するのがめんどくさかった話
この記事は
日曜数学 Advent Calendar 2020 - Adventar 7日目の記事です
前日の6日目はmath_Kantenさんによる一風変わった切り口の記事でとても面白かったです.
導入
突然ですが,次のような問題を考えてみましょう:
関数について,が平面全体を動く時の極値をすべて求めよ.
いかにも偏微分を習いたての頃に演習問題で出てきそうな趣の問題です.
この問題を考える時,まず有用なのが次の事実です:
(十分滑らかで,平面全体を定義域とする)関数について,が極値となるとすると,である.
さて,上の事実を逆に言えば *1 極値を考える時はとなるような場所だけを考えれば良いということになります.というわけでまずは一階偏導関数を求めてみましょう.ちょっと計算が大変ですが,この程度なら気合いでなんとかなります. 計算結果は次のようになります:
ここからとなる点を求めると,の五つであることがわかります.
Hessian
したがって,あとは上の五つの点がそれぞれ極値を与えるか否かを考えれば良いことになります. このうちについては,付近でのの符号を考えれば極値になり得ないことがすぐにわかります. 残りの4点について考える上で,よく知られた次の事実は有用そうです:
(十分滑らかで,平面全体を定義域とする)関数について,であるとする. このときであればは極値であり であればは極値でない.
このにはHessianという名前がついています.上記の通り関数の極値を求める上で有用なものですが,いかんせん今回の場合は計算がめんどくさい! 上で求めた一階微分の式からも容易に想像がつく通り,今回のの二階微分を求めるのは計算量が多くなかなか大変です.そこでできればもっと単純な方法で求めたい,というのが今回の記事の主旨になります.
(多変数版)最大値原理
とりあえず残りの4点についてによる値を計算してみると,それぞれ となることがわかります. またをググッと睨むとであることもわかります. したがって,十分大きいをとると,のときとなります. ところで,次の多変数版最大値原理を考えれば,はでの最大値,最小値を持つがわかります.
を連続関数として,とする. このときは上での最大値,最小値を持つ.
(これが1変数の最大値原理(連続関数は閉区間上での最大値,最小値を持つ)の自然な拡張であることはすぐにわかると思います)
ところで,やはを満たすため,のでの最大値は以上, 最小値は以下となることがわかります.したがっての定義からとなる点ではでの最大値や最小値を与える点は存在しません. するとはでの最大値,最小値を持つことになります.すぐわかることとして,この範囲での最大値最小値はの微分零点によって与えられます. すなわち,のでの最大値最小値はの中に存在することになります. つまり,のでの最大値は,最小値はとなります. ところでの取り方からこれは平面全体でのの最大値,最小値をそれぞれ与えることもすぐわかります. 最大値は極大値であり最小値は極小値であることから,当初の問題の答えは以下のようになります.
は極大値,極小値を持つ.
以上のようにして面倒な微分を計算することなく極大値極小値を求めることができました.
おまけ
上記の議論は次のような形で一般化することができます.
連続関数は,を満たすとする. このとき 1. ある点でが正となるときは最大値を持ち, 2. ある点でが負となるときは最小値を持つ.
*1:この場合の逆に言えばは日常語であって,論理的な意味での逆向きのimplicationの意味ではありません.対偶を取れば,という方がいいかも…