tecktom.com

汎函数の未定乗数法 — 関数を1点とみる

2026年10月30日その他教養

問いは木下が出したもので、答えは Claude Code と調べて書いたものです。

目次
  1. 1. 関数は関数空間の1点
  2. 2. 拘束は関数空間の中の曲面、条件は「勾配が法線と平行」
  3. 3. 2次元に削って実際に描く(リッツ法)
  4. 4. 無限次元ならではの注意
  5. 5. きっかけ:非ホロノミック拘束
  6. 作用に を足して変分すると、なぜ違う運動になるか
  7. 関連

TeX 版(図13枚・演習10題・検算つき):未定乗数法/未定乗数法(2026-11-01。第2章がこのメモの絵、第3章が解析力学の拘束力。非ホロノミックは §3.4 の発展の箱で要約し本体はこのメモ §5)

2026-10-30 の会話(非ホロノミック拘束の話から派生)を骨組みにしたメモ。工学博覧会の解析班 第1回の会合(10/30 17:14〜)の最中に、板書の話(2026-10-30_解析班第1回会合「板書」)を木下が質問して取ったログで、散歩道の記事の種でもある。2A の解析力学から1年ほど、「汎函数の未定乗数法が何をしているのか」の絵が持てていなかったのが、この会話で解けた。そのときの言葉:

それぞれの関数を関数空間上の点として扱った時の多変数関数の停留問題ということだね?

これで合っている。以下、その絵を順に書く。有限次元の未定乗数法(「接する」=∇f∥∇g\nabla f \parallel \nabla g)はラグランジュ未定乗数法とKKT条件 §2 にあり、ここはその無限次元版にあたる。

1. 関数は関数空間の1点

区間 0≤x≤10\le x\le 1 で両端が 00 の関数は、フーリエ級数 y(x)=∑nansin⁡nπxy(x)=\sum_n a_n\sin n\pi x で書ける。係数の並び (a1,a2,… )(a_1,a_2,\dots) を座標とみれば、関数1つは無限次元の空間の1点になる。汎函数 J[y]J[y] はこの点の上の「高さ」で、座標で書けば変数が無限個ある関数 J(a1,a2,… )J(a_1,a_2,\dots) にすぎない。

座標の代わりに xx を幅 hh で刻み yi=y(xi)y_i=y(x_i) を変数にしても同じことが言える。

J[y]=∫F(x,y,y′) dx≈∑iF ⁣(xi, yi, yi+1−yih)hJ[y]=\int F(x,y,y')\,dx \approx \sum_i F\!\left(x_i,\,y_i,\,\frac{y_{i+1}-y_i}{h}\right)h

右辺は y1,…,yNy_1,\dots,y_N のふつうの関数で、その偏微分を hh で割った h→0h\to0 の極限が汎函数微分になる。

1h∂J∂yi  ⟶  δJδy(x)=∂F∂y−ddx∂F∂y′\frac{1}{h}\frac{\partial J}{\partial y_i}\;\longrightarrow\;\frac{\delta J}{\delta y(x)}=\frac{\partial F}{\partial y}-\frac{d}{dx}\frac{\partial F}{\partial y'}

つまり δJ/δy(x)\delta J/\delta y(x) は勾配 ∇J\nabla J の「xx 番目の成分」であり、オイラー・ラグランジュ方程式は勾配 =0=0 を全成分について書いたものである。

2. 拘束は関数空間の中の曲面、条件は「勾配が法線と平行」

有限次元で g(x)=0g(\boldsymbol x)=0 のもと ff を停留させる条件は ∇f=λ∇g\nabla f=\lambda\nabla g、すなわち ff の勾配が拘束面の法線と平行になることだった。汎函数でも絵はまったく同じで、拘束が何本あるかで乗数の形が変わるだけである。

積分の拘束(等周問題):∫G dx=C\int G\,dx=C は刻めば ∑iGih=C\sum_i G_i h=C という1本の式、つまり関数空間の中の1枚の曲面である。法線は1本なので乗数も1個の定数で、

δJδy(x)=λ δGδy(x)(すべての x で同じ λ)\frac{\delta J}{\delta y(x)}=\lambda\,\frac{\delta G}{\delta y(x)}\qquad(\text{すべての }x\text{ で同じ }\lambda)

例は懸垂線:位置エネルギー ∫y1+y′2 dx\int y\sqrt{1+y'^2}\,dx を全長 ∫1+y′2 dx=L\int\sqrt{1+y'^2}\,dx=L のもとで最小化する。

点ごとの拘束:g(x,y(x))=0g(x,y(x))=0 が各点で成り立つ場合、点 x0x_0 ごとに1枚ずつ、無限枚の曲面がある。点 x0x_0 の曲面の法線は x0x_0 に集中した関数 ∂g∂y δ(x−x0)\frac{\partial g}{\partial y}\,\delta(x-x_0) であり、無限本の法線を係数 λ(x0)\lambda(x_0) で重ねると

∫λ(x0) ∂g∂y δ(x−x0) dx0=λ(x) ∂g∂y(x)\int\lambda(x_0)\,\frac{\partial g}{\partial y}\,\delta(x-x_0)\,dx_0=\lambda(x)\,\frac{\partial g}{\partial y}(x)

となる。乗数が関数 λ(x)\lambda(x) になるのは、拘束面が無限枚あるからである。解析力学のホロノミック拘束g(q,t)=0g(q,t)=0 は各時刻での拘束なので乗数は λ(t)\lambda(t) になり、振り子ならその値が糸の張力(に比例する量)になる。

多変数 汎函数
変数 x1,…,xnx_1,\dots,x_n y(x)y(x)(各点の値/フーリエ係数)
勾配 ∂f/∂xi\partial f/\partial x_i δJ/δy(x)\delta J/\delta y(x)
拘束の本数 mm 本 積分なら1本・点ごとなら無限本
乗数 λ1,…,λm\lambda_1,\dots,\lambda_m 定数 λ\lambda または関数 λ(x)\lambda(x)

3. 2次元に削って実際に描く(リッツ法)

最初の2項だけを残して y=asin⁡πx+bsin⁡2πxy=a\sin\pi x+b\sin2\pi x とすると、関数は平面の点 (a,b)(a,b) になる。∫01y2 dx=1\int_0^1 y^2\,dx=1 のもと ∫01y′2 dx\int_0^1 y'^2\,dx を最小にする問題は、積分を実行すると(sympy で確認)

G=a2+b22,J=π2(a2+4b2)2G=\frac{a^2+b^2}{2},\qquad J=\frac{\pi^2\left(a^2+4b^2\right)}{2}

となり、拘束は円 a2+b2=2a^2+b^2=2、JJ の等高線は bb 方向に4倍急な楕円になる。楕円が円に接する点が答えで、∇J=(π2a, 4π2b)\nabla J=(\pi^2a,\,4\pi^2b) と ∇G=(a, b)\nabla G=(a,\,b) の平行条件から

が出る。汎函数として正直に解くと固有値問題 −y′′=λy-y''=\lambda y になり、固有値 π2,4π2,…\pi^2,4\pi^2,\dots の頭2つと一致する。

ここでの2変数関数 f(a,b)=J[asin⁡πx+bsin⁡2πx]f(a,b)=J[a\sin\pi x+b\sin2\pi x] は汎函数そのものではなく、汎函数を平面a3=a4=⋯=0a_3=a_4=\dots=0 で切った断面である。断面の外にある関数は扱えないので一般には近似になる(リッツ法)。この例で厳密解が出たのは、本当の解がたまたまこの平面上にあったからにすぎない。座標を全部残せば断面ではなく汎函数そのものになる。

4. 無限次元ならではの注意

5. きっかけ:非ホロノミック拘束

会話の出発点は「非ホロノミックだと経路依存するのに、どこへでも動ける」という話だった。要点だけ残す。

作用に λ\lambda を足して変分すると、なぜ違う運動になるか

速度について線形な拘束 ai(q) q˙i=0a_i(q)\,\dot q^i=0 を考える(一輪車なら a=(sin⁡θ, −cos⁡θ, 0)a=(\sin\theta,\,-\cos\theta,\,0))。§2 の流儀をそのまま当てはめると、拘束つきの作用を

S[q,λ]=∫(L+λ(t) ai(q) q˙i)dtS[q,\lambda]=\int\left(L+\lambda(t)\,a_i(q)\,\dot q^i\right)dt

として qq と λ\lambda の両方で変分をとることになる。これを vakonomic(変分的)な方法と呼ぶ。オイラー・ラグランジュ方程式を書くと

ddt∂L∂q˙i−∂L∂qi=−λ˙ ai+λ(∂iaj−∂jai)q˙j\frac{d}{dt}\frac{\partial L}{\partial\dot q^i}-\frac{\partial L}{\partial q^i}=-\dot\lambda\,a_i+\lambda\left(\partial_i a_j-\partial_j a_i\right)\dot q^j

が出る。一方、力学で正しいのはダランベールの原理(ラグランジュ・ダランベールの方程式)

ddt∂L∂q˙i−∂L∂qi=Λ(t) ai\frac{d}{dt}\frac{\partial L}{\partial\dot q^i}-\frac{\partial L}{\partial q^i}=\Lambda(t)\,a_i

のほうである。−λ˙-\dot\lambda を Λ\Lambda と読み替えれば第1項は一致するので、違いは右辺のλ(∂iaj−∂jai)q˙j\lambda\left(\partial_i a_j-\partial_j a_i\right)\dot q^j だけである。この項は aa の回転(外微分 dada)で、拘束が積分できて ai=∂ifa_i=\partial_i f と書ければ消え、二つの方法は一致する。非ホロノミックのときだけ残る。

違いの出どころは「どの曲線と比べるか」。vakonomic では、比べる相手の曲線 q+δqq+\delta q も拘束を満たす=許される動きだけを並べて、その中で作用が停留するものを選ぶ。§2 の絵で言えば、曲線の空間の中の「許される曲線の集合」という曲面の上で停留点を探していて、数学としては正しい。ダランベールの原理はそうではなく、各時刻で変位 δq\delta q を許される向き ai δqi=0a_i\,\delta q^i=0 に取れ、と言うだけである。ずらした後の曲線が拘束を満たすかは問わない。この二つの条件の差は

ddt(ai δqi)−δ(ai q˙i)=(∂jai−∂iaj)q˙j δqi\frac{d}{dt}\left(a_i\,\delta q^i\right)-\delta\left(a_i\,\dot q^i\right)=\left(\partial_j a_i-\partial_i a_j\right)\dot q^j\,\delta q^i

で、ここにも同じ回転が出てくる。ホロノミックなら右辺は 00 で、各時刻で面に沿ってずらせば曲線ごと面に乗ったままになる(針金のビーズ)。非ホロノミックでは、各瞬間に許される向きへずらしても、ずらした曲線はもう許される動きではない。これは上のリー括弧が横向きを生んだのと同じ、積分できないことの現れである。

どちらが正しいかは物理が決める。スケートの刃が及ぼす力は刃に垂直で、許される向きの変位に対して仕事をしない(理想拘束)。これを式にしたものがダランベールの原理で、変分原理から導かれるものではなく、拘束力についての物理の仮定である。一輪車(L=m2(x˙2+y˙2)+I2θ˙2L=\tfrac m2(\dot x^2+\dot y^2)+\tfrac I2\dot\theta^2)で比べると(sympy で導出、scipy で数値確認)、前進の速さを v=x˙cos⁡θ+y˙sin⁡θv=\dot x\cos\theta+\dot y\sin\theta として

vakonomic が正しい問いもある。「許される動きのうち、ある量を最小にするものはどれか」という最適制御の問い、たとえば縦列駐車で一番短い動かし方(サブリーマン幾何の測地線)がそれで、こちらは本当に許される曲線どうしを比べたいので vakonomic が正解になる。汎函数の未定乗数法そのものは正しい道具で、非ホロノミック系ではそれが答える問い(最適な経路)と力学の問い(実際の運動)が別物になる、というのが要点である。

関連