高校生によるラグランジュの未定乗数法の解説

## 初めに
この記事は、現在高校生である自分が一般固有値問題を解く際に使われる手法の一つとして学んだラグランジュの未定乗数法について解説していきます。自分の理解をした方法で書こうと思うのでわかりにくいところもあるかもしれません。とても大雑把な説明となるため、基本的な理解がしたい方はぜひお読みください。

## ラグランジュの未定乗数法とは
まず、ラグランジュの未定乗数法とは最適化問題に使われる手法で、ある制約条件の中で、ある数式(目的関数)を最大化または、最小化したい時に使われます。
式に表すと、
```math
\begin{align}
minimize\;f(x)\;\text{subject to}\;g(x) = 0.
\end{align}
```
となる。
簡単にこの式を表すと、「条件$g(x)=0$の下で$f(x)$の極値または極小を考える」ということです。この時に、$f(x)$と$g(x)$は微分可能であり、微分をしたものが連続である必要があります。

この条件を満たす候補として挙げられるのは、$\nabla g = 0$かつ$g(x) = 0$ であり、$\nabla f = \lambda \nabla g$かつ$g(x) = 0$である時です。
この二つの条件：
1) $\nabla g = 0$かつ$g(x) = 0$
2) $\nabla f = \lambda \nabla g$かつ$g(x) = 0$
がとても大事になります。
<br>
急に式を並べてしまったため、とてもわかりにくかったと思うので、少しずつ丁寧に解説していきます。

まず、ラグランジュの未定乗数法を適用する際には、$f(x)$という関数の$x$は普通の整数であったり、$\begin{bmatrix}x_1&x_2\end{bmatrix}^T$という行列であったりします。
例えば、$f(x)$の関数に入る$x$を$\begin{bmatrix}x& y\end{bmatrix}^T$とし、$g(x)$にも$\begin{bmatrix}x&y\end{bmatrix}^T$とした時のグラフがこの下の図のようになるとします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968937/fd6dc2e5-24e0-e701-e9b3-73fdcedc7e43.png)
この図は、wikipediaさんによるLagrange Multiplier から引用をさせて頂きました。

このような図のように$f(x, y)$と$g(x, y)$が存在する場合、$\nabla g = 0$という条件が大事になってきます。
この$\nabla g = 0$とは、$g(x, y)=c$の偏微分がという意味です。要は、$g(x, y)$を$x$で微分しても、$y$で微分しても0になるということです。
式で表すと、
```math
\begin{align}
\nabla g(x) &= \left(\frac{\partial g}{\partial x}, \frac{\partial g}{\partial y}\right)\\
&= \left(0 , 0\right)
\end{align}
```
となります。
上の図に示される、赤い線は$g(x, y) = c$の時を表す線となっており、この線上という縛られた動き方が、ラグランジュの未定乗数方の制約を反映しています。青い点線は$f(x, y)$がある定数である時を表す線となっています。
このように、ラグランジュの未定乗数法では、$g(x, y) = c$でありながら、$f(x, y)$が表す極値または極小を探す問題を解く方法ということになります。

上記の説明で、１つ目の条件であった、なぜ$\nabla g = 0$でなければならないのかがわかったと思います。難しければ、説明が下手であるせいだと思うので、申し訳ございません。。。
## 条件２

ここからは、２つ目の条件である、$\nabla f = \lambda \nabla g$である時ということについて解説していこうと思います。
ざっくりいうと、この数式は$g(x, y)$の勾配が$f(x, y)$との接線と垂直となる点を表しています。

ラグランジュでは、$f(x, y)$を最大化または最小化をしたいということは、常に$f(x, y)$が最も小さくなる、または大きくなる方向に進みたいということです。

この話を具現化してみると、例えば大きな茶碗があり、その時に一つのボールがその側面に存在するとします。もし、$g(x, y)$のような制約がなければ、放っておくと、ボールはそのまま転がり、茶碗の一番低い場所、$f(x, y)$での最小値に行き着きます。ですが、この$g(x, y)$はボールを茶碗の淵に留めさせて置くような役割を持っています。
→下の絵みたいな感じです（絵が小学生並みで申し訳ないです）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968937/1288645a-bb13-67ab-7ab6-9597099ae6cb.jpeg"width=60%>



よって、上記の図の$f(x, y)$に繋がっている矢印は、極小値または極大値へ進む方向を示しています。ここで、$g(x, y)=c$という制限があることにより点を制約を守った状態で移動させ続けることが可能になります。
![スクリーンショット 2025-01-18 10.38.48.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968937/aba465d2-4086-dce5-2991-932ca553d322.jpeg)

数学的に説明すると、$f(x, y)$がベクトルを持つ時、$g(x, y)$の勾配が、$\nabla f$と垂直な方向を向いていることにより、点を制約内に留めておくことができます。そして、一番$f(x, y)$の極小値または極大値に一番近い$g(x, y)$の位置を求めれば、この問題を解くことができます。
高校数学で、２次関数の最小値または最大値を求める際に、微分をして0になる場所が候補となるのと同じように、この$\nabla g$、$g(x, y)$の勾配が0である時、それは$g(x, y)$が一番$f(x, y)$の極小値または極大値に近い点である候補ということです。ですが、この$f(x, y)$は$g(x, y)$のベクトルと一致をしません、ここで出てくるのが$\lambda$と表される「未定乗数」と言われるものです。

数式的に、上で説明したことを表すと、$g(x, y)=c$の曲線上で、勾配が0になるところを見つけるとは、
```math
\begin{align*}
\frac{d}{dt}\left(g(x, y))\right)&=\frac{d}{dt}(0)\\
→\frac{\partial g}{\partial x}\left(\frac{dx}{dt}\right)+ \frac{\partial g}{\partial y}\left(\frac{dy}{dt}\right) &=0\\
\end{align*}
```
そしてこの$\left(\frac{dx}{dt}, \frac{dy}{dt}\right)$を$\lambda$と置き換えると、
```math
\begin{align*}
\frac{\partial g}{\partial x}\left(\lambda_1\right)+ \frac{\partial g}{\partial y}\left(\lambda_2\right) &=0\\
\nabla g \cdot \lambda &= 0\;where \nabla g = \left(\frac{\partial g}{\partial x}, \frac{\partial g}{\partial x} \right), \lambda = \left(\lambda_1, \lambda_2\right)
\end{align*}
```
数式的には、とてもわかりやすい気がしますね。
最後に、この$\lambda$は基本的な一般固有値問題を解くことによって求めることができます。複雑なものを一気に簡単な計算に落とし込めるいい方法ですよね。
## まとめ
ということで、ラグランジュの未定乗数法について説明していきました。自分も理解するのがとても難しかったです。自分のアウトプット、そして基本的な理解をしたい方を対象として書いたものなので、役に立ったのであればとても嬉しいです。
もっと博識な方がおられ、間違っている箇所を見つけられましたら、ぜひご指摘ください。

## 参考文献
・Wikipedia. "Lagrange Multiplier", https://en.wikipedia.org/wiki/Lagrange_multiplier, (参照2025年1月16日)
・Dimitri P.Bertesekas. "Convex Analysis and Optimization", 2003年, ISBN 1-88652945-0, p269-344, (参照2025年1月17日)