表現論 Advent Calendar 2023 9日目の記事です.
本記事をもっと噛み砕いて説明した内容を日曜数学 Advent Calendar 2023 にも投稿予定なので,そちらもぜひご一読ください.
漸化式については以前にも
を書いてきました.#4 が集大成とも呼べる内容で,#1-2 の問題点を克服したような理論になっています.
#4 は基本的な線形代数の理解があれば,ある程度証明 "は" 追えるはずですが,もう少し要点を絞って解説しようというのが本記事の目的です.
3項間漸化式とは
表現論 Advent Calendar を見ている方にとって,もはや説明の必要は無いかもしれませんが,ここで3項間漸化式と呼んでいるのは
a_{n + 2} = c_1 a_{n + 1} + c_0 a_n \quad (c_0, c_1 \in \mathbb C)
という形の漸化式のことです.これを,微分方程式に倣って正規形線形斉次漸化式と呼ぶことにしましょう.
このタイプの漸化式の解は高校でも教わる通り,特性方程式
\chi (t) := t^2 - c_1 t - c_0 \in \mathbb C [t]
の根を \lambda_1, \lambda_2 としたとき,
- 重根を持たない(\lambda_1 \neq \lambda_2)とき \lambda_1^n と \lambda_2^n;
- 重根を持つ(\lambda_1 = \lambda_2)とき \lambda_1^n と n \lambda_1^n
の線形結合で書くことができます.あとは初期条件 a_0, a_1 を代入することで,線型結合の係数が求まるという流れでした.
微分方程式との関連
さて,微分方程式の解法を知っていれば,上の解き方が正規形線形斉次微分方程式のそれと全く同じことに気づくでしょう.
微分方程式の場合は d 次に一般化することができます.
\frac{\mathrm d^d}{\mathrm d x^d} f = c_{d - 1} \frac{\mathrm d^d}{\mathrm d x^d} f + \dotsb + c_0 f
の特性方程式を
\chi (t) := t^d - c_{d - 1} t^{d - 1} - \dotsb - c_0
として,その相異なる根を \lambda_1, \dotsc, \lambda_k,それぞれの重複度を m_i とするとき,微分方程式の一般解は x^j \exp (\lambda_i x) (1 \leqslant i \leqslant k, 0 \leqslant j < m_i) の線形結合で書くことができます.
この手法は当然,一般の d 項間(正規形・線形斉次)漸化式に適用することができます.
それをしたのが以前私の書いた記事(#1)です.
問題点
そこでは(複素)数列全体のベクトル空間 S = \mathrm{Map} (\mathbb Z, \mathbb C) 上に二つの線形演算子
p : (a_n)_{n \in \mathbb Z} \mapsto (a_{n + 1})_{n \in \mathbb Z}
および
q : (a_n)_{n \in \mathbb Z} \mapsto (n a_n)_{n \in \mathbb Z}
を定義することで,
- 漸化式は (p - \lambda_1)^{m_1} \dotsm (p - \lambda_k)^{m_k} a = 0 という形に直せる
-
(p - \lambda) a = 0 の解(p の固有ベクトル)は \lambda_\bullet := (\lambda^n)_{n \in \mathbb Z} のスカラー倍である
-
(p - \lambda)^m a = 0 の解(p の一般固有ベクトル)は q^j \lambda_\bullet (0 \leqslant j < m) の線型結合で書ける
- 元の漸化式の解は q^j (\lambda_i)_\bullet たちの線形結合で書ける
という流れで漸化式の一般解を導出しました.(元の記事では添字を \mathbb Z ではなく \mathbb Z_{\geqslant 0} で考えていましたが,ほぼ同じです.)
記事公開当時 悩んでいたのは次の二点です:
-
p, q の交換関係が [p, q] = p となり,微分方程式とパラレルにならない —— 微分方程式の場合は正準交換関係 [\mathrm d/\mathrm d x, x] = 1 が成り立つ.[p, q] = 1 となる q を天下り的に与えることもできるが,その出所(でどころ)が不明瞭である.
-
q^j (\lambda_i)_\bullet の線形独立性の証明や解空間の次元の計算が,線形代数よりむしろ "行列代数" 的になっている.
前者を解決するために目を付けたのが量子力学で,後者のために目を付けたのが Heisenberg 代数の表現論です.
量子力学も半分表現論みたいなものだという信念に基づき,表現論 Advent Calendar ですがそちらも含めて解説していきます.
量子力学とのアナロジー
量子力学では,q 演算子と p 演算子があります.それらの定義は流派によって様々ですが,そのうちの一つは次のような流れです:
-
q 演算子を (q f) (x) := x f (x) で定義する,
-
p 演算子を,q の固有状態の(無限小)平行移動の生成子として定義する.
このように定義された p, q は自動的に正準交換関係 [p, q] = 1 を満たします.
なお p 演算子から出発して,その固有状態の平行移動の生成子として q を定義しても同様です.
数列空間 S 上にも同じ手続きで q 演算子を導入したいのですが,S は残念ながら Hilbert 空間ではありません.(量子力学も厳密な意味で Hilbert 空間なのか,という議論はありますが,この記事には影響しません.)
たとえば \ell^p 有界みたいな条件があれば良いのですが,ここで考えているのは一般の数列たちです.
したがって解析的な手法が使えないので,代数的に計算するしかありません.
そこで中心となる道具が超関数(distributions)です.上記 PDF では数列の用語に倣って母関数と呼んでいます.
超関数は解析的な定義もできますが,ここでは表現論の常として代数的に,つまり形式的 Laurent 級数として定義します.
まず数列をその母関数(超関数)a (z) = \sum a_n z^n \in \mathbb C [[ z^{\pm 1} ]] と(ベクトル空間として)同一視します.
そこには演算子 p : a \mapsto z^{-1} a が定義されています.
量子力学のように,この Fourier 変換的なものを考えたいので,L^p 空間を模倣していきましょう.
まず母関数の留数を \mathrm{Res}_z a := a_{-1} で定義します.
a が通常の複素関数であれば留数定理により a_{-1} \propto \oint a (z)\,\mathrm d z が成り立つので,これを S における積分みたいなものだと見なします.
すると S 上の内積
\langle a (z), b (z) \rangle = \mathrm{Res}_z (a (z) b (z))
を考えたくなりますが,これは上手くいきません.積の中に無限和が現れてしまうためです.
S \otimes S の中で "積が定義できる部分空間" を考えても良いのですが,もう少しスマートにいきましょう.
私たちが今やりたいことは,量子力学におけるスペクトル分解 |\psi\rangle = \int \psi (x)\, |x \rangle \, \mathrm d x です.
p 演算子の固有ベクトルは | \lambda \rangle := \sum \lambda^n z^n です.
母関数のスペクトル分解とは,a (z) を「\hat a (\lambda) \, |\lambda\rangle の \lambda に関する積分」で表すことを言います.
したがって,\lambda を "変数" とする形式的 Laurent 級数として | \lambda \rangle \in \mathbb C [[ z^{\pm 1}, \lambda^{\pm 1} ]] を考え,何らかの級数 \hat a (\lambda) を用いて
a (z) = \mathrm{Res}_\lambda \hat a (\lambda) \, | \lambda \rangle
が成り立てば嬉しいですね.
量子力学では \psi (x) = \langle x | \psi \rangle でした.それと同じように \hat a (\lambda) を | \lambda \rangle と a (z) の内積で定めましょう:
\hat a (\lambda) := \mathrm{Res}_z a (z) \, |\lambda \rangle \in \mathbb C [[ \lambda^{\pm 1} ]].
\lambda を形式的な変数としているおかげで内積は問題なく定義でき,望み通り
a (z) = \mathrm{Res}_\lambda \hat a (\lambda) \, | \lambda \rangle
が成り立ちます.(実際には \hat a (\lambda) := \mathrm{Res}_z \langle \lambda | \, a (z) のようにブラベクトルを使って定義したいのですが,\mathrm{Res}_z | \lambda \rangle | \mu \rangle = \delta (\lambda - \mu) \in \mathbb C [[\lambda^{\pm 1}, \mu^{\pm 1}]] という計算により | \lambda \rangle = \langle \lambda | と同一視しています.)
ここまで来れば自然に q 演算子を定義できます.
S 上の(ある条件を満たす)演算子 f は,上のスペクトル分解と整合するような \lambda 級数表示 \hat f を持ちます:
f a (z) = \mathrm{Res}_\lambda \left( \hat f \hat a (\lambda) \right) \, | \lambda \rangle.
演算子の無限小生成子を考える際には,こちらの \lambda 級数表示で計算した方が楽になります.
固有状態の無限小平行移動 T (\mathrm d \lambda) の \lambda 級数表示は,新たな形式変数 \mathrm d \lambda を用いて
\hat T (\mathrm d \lambda) \, | \lambda \rangle = | \lambda + \mathrm d \lambda \rangle \quad \mathrm{mod} \, \mathrm d \lambda^2
となるように定義されます.この演算子の生成子は(z 級数表示において)
T (\mathrm d \lambda) = 1 + q \, \mathrm d \lambda \quad \mathrm{mod} \, \mathrm d \lambda^2
を満たすような q のことで,具体的には
\hat q \, | \lambda \rangle = \frac{\partial}{\partial \lambda} | \lambda \rangle
を満たします.z 級数表示なら q = z (\mathrm{d}/\mathrm{d} z) z ですが,\lambda 級数表示の方は量子力学と同じ表式になっていますね.
以上で正準交換関係 [p, q] = 1 が成り立つような演算子の組 p, q を得ることができました.
Heisenberg 代数の表現として
解を見つける
正準交換関係 [p, q] = 1 があれば,1自由度の Hersenberg 代数 \mathfrak h = \mathbb C 1 \oplus \mathbb C p \oplus \mathbb C q の出番です.
\lambda \neq 0 を複素数(形式変数ではなく)として,\mathfrak h の表現 \rho_\lambda : \mathfrak h \to \mathfrak{gl} \, S を
\rho_\lambda : p \mapsto p - \lambda, \quad q \mapsto q, \quad 1 \mapsto 1
で定めます.
すると,p 演算子の固有ベクトル | \lambda \rangle (\in S) はウェイト 1 に属する最高ウェイトベクトル(\rho_\lambda (p) = 0 かつ \rho_\lambda (1) = 1 で作用)となります.(| \lambda \rangle で生成されるという条件はここでは考えません.)
一方で,Heisenberg 代数には標準的な既約表現が知られています:表現 \rho : \mathfrak h \to \mathfrak{gl} \, \mathbb C [z] を
\rho (p) = \frac{\mathrm d}{\mathrm d z}, \quad \rho (q) = z, \quad \rho (1) = 1
で定めると,これは既約となります.実際,任意の多項式 0 \neq f (z) \in \mathbb C [z] に対して
\rho (p)^{\deg f} f \in \mathbb C 1 \setminus \{ 0 \}
となるので,U (\mathfrak h) f \supset U (\mathfrak h) 1 = \mathbb C [z] が従います.ただし,\mathfrak h の universal enveloping algebra を U (\mathfrak h) と書きました.
これによって全射準同型 \varphi : \mathbb C [z] \to U (\mathfrak h) \, | \lambda \rangle が
\varphi (z^n) = q^n \, | \lambda \rangle
を満たすように取れますが,\mathbb C [z] の既約性と Schur の補題よりこれは同型となります.とくに \{ q^n \, | \lambda \rangle \mid n \geqslant 0 \} は線形独立です.
また,\mathbb C [z] において当然
\rho (q)^n 1 \in \mathrm{Ker} \, \rho (p)^{n + 1} \setminus \mathrm{Ker} \, \rho (p)^n
であるので,\varphi という同型を介して,S においても
q^n \, | \lambda \rangle \in \mathrm{Ker} (p - \lambda)^{n + 1} \setminus \mathrm{Ker} (p - \lambda)^n
が成り立ちます.
ここでの議論は,一般に Heisenberg 代数の最高ウェイト表現に対しても成り立ちます.
解空間の計算
さらに,(p - \lambda)^n a = 0 の解空間 \mathrm{Ker} (p - \lambda)^n (\subset S) にはこれら q^i \, | \lambda \rangle しか存在しないことも示すことができます.
まず次の命題に注意しましょう:
\rho_\lambda (p) a (z) \in U (\mathfrak h) \, | \lambda \rangle \Longrightarrow a (z) \in U (\mathfrak h) \, | \lambda \rangle.
証明は簡単です.
標準的な表現 \mathbb C [z] において \mathbb C [z] = \rho (p) \mathbb C [z] が成り立つため,同型 \varphi の下で U (\mathfrak h) \, | \lambda \rangle = \rho_\lambda (p) U (\mathfrak h) \, | \lambda \rangle となります.
したがって,\rho_\lambda (p) a (z) \in U (\mathfrak h) \, | \lambda \rangle ならば適当な b (z) \in U (\mathfrak h) \, | \lambda \rangle を用いて \rho_\lambda (p) a (z) = \rho_\lambda (p) b (z) と書くことができます.
一方で \mathrm{Ker} \, \rho_\lambda (p) = \mathbb C \, | \lambda \rangle なので,結局 a (z) \in b (z) + \mathbb C \, | \lambda \rangle \subset U (\mathfrak h) \, | \lambda \rangle が分かります.
この命題のおかげで,任意の n \geqslant 1 に対して,\mathrm{Ker} \, \rho_\lambda (p)^n \subset U (\mathfrak h) \, | \lambda \rangle という包含関係,言い換えれば
\mathrm{Ker} \, \rho_\lambda (p)^n = \mathrm{Ker} \, \rho_\lambda (p)^n \cap U (\mathfrak h) \, | \lambda \rangle
が成り立ちます.右辺は上で述べたように q^i \, | \lambda \rangle たちを(ベクトル空間の)基底として持つので,以上を合わせれば
\mathrm{Ker} \, \rho_\lambda (p)^n = \bigoplus_{0 \leqslant i < n} \mathbb C q^i \, | \lambda \rangle
が言えました.
同じような議論で,標準的な表現 \mathbb C [z] を介して計算することで,一般の漸化式 (p - \lambda_1)^{m_1} \dotsm (p - \lambda_k)^{m_k} a = 0 の解も求めることができます.
まとめ
高校で教わるような3項間漸化式について,表現論的な観点から解を構成しました.
これは極めて overpower であるものの,Heisenberg 代数の表現論を知っている人にとっては,天下りではない自然な方法で説明できます.
表現論の一つの応用(というか遊び)として知ってもらえたら嬉しいです.
サンタさんが皆さんに良き表現論ライフをプレゼントしてくれることを願って!
追伸
Zenn に投稿したということで,一言だけ技術に関わる内容を.
ここでのお話をプログラミングで実装したらおもしろそうですよね.よくある Stream
みたいな機能を使って母関数の計算を再現できそうです.
Discussion