対称性と保存則 — ネーターの定理
対称性と保存則 — ネーターの定理
ラグランジアンがある連続変換に対して不変なら、その変換ひとつにつき軌道上で保存される量がちょうどひとつ落ちてくる。
はじめに
これまで私たちはラグランジアン からオイラー–ラグランジュ方程式を取り出し、それが多様体上のベクトル場の流れであることを見てきた。本章はそのラグランジアンがもつ 対称性 がそのまま 保存量 を生むという一行の定理 — エミー・ネーター(Emmy Noether, 1882–1935)の1918年の結果 — を扱う。本章を終えると、読者は運動量・角運動量・エネルギーの保存則がすべて同じ機械から落ちてくる一族であることを一段落で説明できるようになり、中心力問題の平面性のように「なぜそうなるか」答えにくかった事実が、対称性という一語で整理される経験をすることになる。
本論 1 — ネーターの定理
配位空間の座標 の上で、1パラメータ変換(one-parameter transformation) を
と置く。ここで (エプシロン)は小さな実数パラメータ、 (クシー)は滑らかな成分関数である。この変換がラグランジアンの 対称(symmetry) であるとは、一次の項まで
が成り立つことを意味する。ここで .
ネーターの定理: このとき次の量
はオイラー–ラグランジュ方程式の解の上で時間に関して定数である。すなわち .
証明のスケッチは一段落で十分である。 を一次まで展開すると
仮定により左辺は 0. 右辺第一項にオイラー–ラグランジュ方程式 を軌道上(on-shell)で代入し、第二項とまとめると積の微分の形になる。整理すると 、つまり は保存される。対称 → 保存 の機械はこの一行で尽きる。
本論 2 — 三つの古典的な例
同じ定理が見慣れた保存則をまとめて落としてくる。
(a) 空間並進 . 自由粒子や閉じた多体系のようにラグランジアンが絶対位置 に依存しない場合、. ネーターの は 、すなわち 方向の 線運動量(linear momentum) が保存される。独立な三方向を取れば 全体が保存される。
(b) 軸まわりの回転. 微小回転は 、すなわち . ネーターの は
ここで が 角運動量(angular momentum). ラグランジアンが 軸まわりの回転に対して不変なら、 が保存される。
(c) 時間並進 . ラグランジアンが時間に陽に依存しないとき()、まったく同じ論法は使えないが同じ精神に沿って進むと
が保存されることを得る。この が ハミルトニアン(Hamiltonian)、標準的な場合は粒子のエネルギーである。この場合は変換が座標ではなく時間パラメータを動かすため、「ラグランジアンの対称」というよりも 作用汎関数(action functional) の対称として扱うほうがすっきりする。きちんとした処理は次章(ハミルトン力学)に回す。
本論 3 — 中心力と 対称性
3次元粒子が中心力場の中を運動するラグランジアン
を見よう。 が にのみ依存するので、 を任意の回転 で回しても と はそのままである。すなわち は 任意の 回転に対して不変だ。本論 2 の (b) を の独立な三選択に適用すれば、角運動量の三成分すべてが保存される。
この一行からケプラー軌道の平面性が従う。 は一定ベクトルだから、任意の時刻 に対して — つまり運動は に垂直な一枚の平面に閉じ込められる。惑星軌道が楕円であるという事実より先に、平面運動であること自体が回転対称の直接の帰結 なのである。
Pythonで確かめる
# ケプラー問題 (m=1, U=-1/r) で角運動量 L = r × v が保存されるかを
# 手書きの RK4 で積分しながら確認する。相対ドリフトが 1e-6 未満なら合格。
import numpy as np
def accel(r): # 万有引力の加速度 (GM=1)
return -r / np.linalg.norm(r)**3
def rhs(state): # 状態 = (r, v) の6次元
r, v = state[:3], state[3:]
return np.concatenate([v, accel(r)])
def rk4_step(s, dt): # 標準4次ルンゲ–クッタ
k1 = rhs(s)
k2 = rhs(s + 0.5 * dt * k1)
k3 = rhs(s + 0.5 * dt * k2)
k4 = rhs(s + dt * k3)
return s + dt * (k1 + 2*k2 + 2*k3 + k4) / 6
r0 = np.array([1.0, 0.0, 0.0]) # 初期位置
v0 = np.array([0.0, 0.9, 0.0]) # 初期速度 → 楕円軌道
state = np.concatenate([r0, v0])
dt, T = 0.005, 10.0
N = int(round(T / dt))
checkpoints = {int(round(t / dt)): t for t in (0.0, 2.5, 5.0, 7.5, 10.0)}
L0 = np.linalg.norm(np.cross(r0, v0)) # 初期 |L|
for n in range(N + 1):
if n in checkpoints: # 五点で |L| を出力
r, v = state[:3], state[3:]
L = np.linalg.norm(np.cross(r, v))
drift = abs(L - L0) / L0
print(f"t={checkpoints[n]:4.1f} |L|={L:.10f} rel.drift={drift:.2e}")
state = rk4_step(state, dt)
五つの時刻すべてで が初期値と小数点以下六桁以上一致していれば、回転対称が保存則へ移されるネーターの機械が、計算機の上でもまったく同じ答えを出すという意味になる。
次章へ
10章: ハミルトン力学では、本論 2 (c) で先送りにした時間並進対称とエネルギー保存をきちんと扱う。ラグランジアンからハミルトニアンへ移るルジャンドル変換を導入すれば、位相空間上の流れと保存量の絵が一度に整理される。ネーターの定理はそこでポアソン括弧と再会する。