ある関数 f(x,y) を束縛条件 g(x,y)=0 の元で最大化あるいは最小化する (x,y) を求める際に用いられるのがラグランジュの未定乗数法(Lagrange Multipliers)です。
ラグランジュの未定乗数法の式
L(x,y)=f(x,y)−λg(x,y)
∂x∂L=∂y∂L=∂λ∂L=0
は一見複雑な見た目をしており特に L(x,y) が何を意味しているのかが分かりにくいと思います。
この文書ではラグランジュの未定乗数法の式が何を意味していて、なぜこれによって束縛条件 g(x,y)=0 の元での f(x,y) の最大値(あるいは最小値)を求めることができるのかを直感的に分かりやすいように説明します。
ただし微分、ベクトルに関して高校レベルの数学を理解している必要があります。
ラグランジュの未定乗数法
2次元の場合
(x,y) が束縛条件 g(x,y)=0をみたす条件下で、ある関数 f(x,y) を最大化(最小化)することを考える。
変数λを導入して関数L(x,y,λ)を次のように定義する。
L(x,y,λ)=f(x,y)−λg(x,y)
λのことをラグランジュ乗数(Lagrange multiplier)、L(x,y,λ)をラグランジュ関数(Lagrange function)と呼ぶ。
ある (x0,y0) が束縛条件 g(x,y)=0 を満たし f(x,y) を最大化または最小化するならば、あるλ0が存在し、
(x0,y0,λ0)において
∂x∂L=∂y∂L=∂λ∂L=0
が成立する。
n次元の場合
n個の変数x1,x2,…,xn が 束縛条件 g(x1,x2,…,xn)=0 をみたしている場合に、
関数f(x1,x2,…,xn)を最大化する(x1,x2,…,xn)を求めたい。
L(x0,x1,…,xn,λ)=f(x1,x2,…,xn)−λg(x1,x2,…,xn)
で定義されるL対して、fが束縛条件g=0の元で最大化される時
∂x0∂L=∂x1∂L=…=∂xn∂L=∂λ∂L=0
が成立する。
式の意味の解説と直感的な証明
2次元の場合で考えましょう。ラグランジュの未定乗数法で使われる等式を確認のためにもう一度書いておきます。
∂x∂L=∂y∂L=∂λ∂L=0
(1) ∂λ∂L=0の意味
まず初めに∂λ∂L=0の部分ですが、これは単にg(x,y)=0を難しく書きなおしたものに過ぎません。
∂λ∂L=∂λ∂(f(x,y)−λg(x,y))=∂λ∂f(x,y)−∂λ∂(λg(x,y))=−g(x,y)=0
∂λ∂L=0は束縛条件g(x,y)=0を別の方法で表現したものに過ぎないので、(x,y)を解析的に求める上では特に役にはたちません。
(2) ∂x∂L=∂y∂L=0の意味
ラグランジュ未定乗数法において本当に意味のある部分は
∂x∂L=∂y∂L=0
です。この部分はλの場合と異なりx, y をまとめて解釈すると分かりやすいです。
Lを展開して、変形すると
∂x∂f(x,y)−λ∂x∂g(x,y)=0
∂y∂f(x,y)−λ∂y∂g(x,y)=0
−λの項をそれぞれ右辺に持っていけば、
∂x∂f(x,y)=λ∂x∂g(x,y)
∂y∂f(x,y)=λ∂y∂g(x,y)
f(x,y)はfとして省略して書きつつ、ベクトルで2つの式をまとめると
(∂x∂f∂y∂f)=λ(∂x∂g∂y∂g)
これはどういう意味でしょうか?
2つのベクトルa, bがある実数kに対して a=kbが成り立っているというのは、2つのベクトルa, bが平行であることを意味します。
つまりラグランジュ未定乗数法の
∂x∂L=∂y∂L=0
はベクトル
(∂x∂f∂y∂f)
とベクトル
(∂x∂g∂y∂g)
は平行であるということを意味しているのです。
つまりラグランジュ未定乗数法はf(x,y)を最大化する点(x,y)において、
f(x,y), g(x,y)を偏微分して得られるベクトル
(∂x∂f∂y∂f), (∂x∂g∂y∂g)
は平行になるといういうことを難解に表現したものに過ぎません。後は偏微分で得られるベクトル
(∂x∂f∂y∂f)
が何を意味しているかを理解すればラグランジュの未定乗数法が何を意味していて何故それを使ってf(x,y)を最大化する(x,y)を求めることができるのかが理解できます。
勾配 (gradient),法線ベクトル
(∂x∂f∂y∂f) のことを専門用語で勾配 (Gradient)と呼び、
∇fと表記します。
つまりラグランジュの未定乗数法は、f(x,y)を最大化する点においてf(x,y), g(x,y)のそれぞれの勾配∇f, ∇gが平行になるということを意味しています。
では勾配∇f, ∇gはどのようなベクトルなのでしょうか。
ある一定値 c に対して f(x,y)=c をみたす(x,y)について考えます。
この(x,y) は (x,y) 平面上の曲線となり、f を山の高さだと思うと関数 f(x,y) の等高線に相当するものになります。
曲線f(x,y)=c上のある点(x,y)から、(x,y)を微小に(Δx,Δy)だけ変化させたることを考えます。
(x,y)を微小に変化させた場合のfの変化は偏微分に比例するので
f(x+Δx,y+Δy)≃f(x,y)+∂x∂fΔx+∂y∂fΔy=c+∂x∂fΔx+∂y∂fΔy
いま (Δx,Δy) が曲線 f(x,y)=c の接線方向のベクトルだとすると、(Δx,Δy)だけ移動した点
(x+Δx,y+Δy)も曲線上の点になるのでf(x+Δx,y+Δy)=c。そのため
f(x+Δx,y+Δy)=c+∂x∂fΔx+∂y∂fΔy=c
となります。両辺からcを引いて
∂x∂fΔx+∂y∂fΔy=0
ベクトルの内積で表現すると
(∂x∂f∂y∂f)⋅(ΔxΔy)=∇f⋅(ΔxΔy)=0
(ゼロではない) 2つのベクトルの内積が0になるのは、2つのベクトルが直交する時です。
そして(ΔxΔy) は曲線 f(x,y)=c の接線方向の微小なベクトルです。その接線方向のベクトルと直交する勾配∇fは、すなわち、
f(x,y)=cの法線ベクトルに他なりません。
そしてラグランジュ未定乗数法の∂x∂L=∂y∂L=0⇔∃∇f=λ∇gは
f の等高線 f(x,y)=c と束縛条件の曲線 g(x,y)=0 のそれぞれの法線ベクトルが平行であることを意味しています。
つまりは2つの曲線が接しているということです。
なぜ f(x,y)=c, g(x,y)=0 が接する必要があるか
以上より、ラグランジュの未定乗数法が述べていることは言い換えれば、束縛条件 g(x,y) の元で f(x,y) が最大値(あるいは最小値)となる点(x,y)において曲線
g(x,y)=0 と f(x,y)=c (cは点(x,y)におけるf(x,y)の値)が接するということです。
これは逆に考えて(対偶を考えて)、g(x,y)=0 と f(x,y)=c が点(x,y)において交差しているならばその点で f(x,y) は最大・最小にはならないと考えれば、直感的に理解できます。
f(x,y)=cで分割された2つの領域の片側はf(x,y)>cとなるエリア、もう片側は f(x,y)<c となるエリアです。
上の図のようにもし点(x,y) で g(x,y)=0 と f(x,y)=c が交差しているのならば、g(x,y)=0の曲線上に f(x,y)>c となる点と f(x,y)<c となる点が必ず存在することになります。つまり束縛条件 g(x,y)=0 をみたしつつ、 f(x,y) を c よりも大きくする点と小さくする点が存在するわけですから、その点においては f(x,y) は最大・最小いずれにもなることはありません。
解説・証明まとめ
ラグランジュ未定乗数法の式
∂x∂L=∂y∂L=∂λ∂L=0
の∂λ∂L=0の部分は単に束縛条件g(x,y)=0を言い換えたものです。
∂x∂L=∂y∂L=0の部分はf, gの勾配(gradient)∇f, ∇gが平行であることと意味しています。
勾配∇fはf(x,y)の等高線の法線ベクトルであるので、∇f, ∇gが平行であるというのは要するにf(x,y)の等高線とg(x,y)の等高線が接していることと同義です。