このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

ベクトル空間の基底とフレームは違う

「ウワーッ、間違えた!」という事態が今日発生しました。何を間違えたかと言うと、ベクトル空間の基底とフレームを混同してました。

基底とフレームは、世間の皆さんも混同してますよね(たぶん)。フレームのことも基底と呼ぶ(意図的混同、あるいはオーバーロードする)人もいれば、区別が付いてない人もいるでしょう。僕は、区別は付いているつもりなんですが、「フレーム」と言うべき場面で「基底」と言ってしまうことはけっこうあります。

世間全般で基底とフレームを混同しているので、僕が間違えても指摘されることもありません。が、やっぱり間違いは間違いなので、この記事で、基底とフレームの違いをハッキリさせます。ついでに、というか実は本題として、次の主張に圏論的に明確な意味を与えます。

  • フレームが固定されたベクトル空間のあいだの線形写像は、一意的に決まる行列によって表現できる。

[追記]穏健かつ迎合的な用語法の案は「基底とフレーム、丸く収まる妥協案」参照。[/追記]

内容:

基底とフレーム

ベクトル空間の係数体〈スカラー体 | 基礎体〉は実数体Rに固定して、以下では係数体には言及しません。有限次元のベクトル空間だけ考えることにするので、単に「ベクトル空間」と言ってもそれは有限次元です。有限次元ベクトル空間と線形写像の圏をFdVectとします。ほかに、集合(と写像の)圏Set、行列の圏Matなどが登場します。

ベクトル空間Vの部分集合Φが基底〈basis〉だとは、Φが線形独立〈一次独立〉でかつ生成系になっていることです。より詳しいことは線形代数の教科書を見てください。基底はベクトル空間の部分集合であることを憶えておいてください。ベクトル空間Vのすべての基底からなる集合をBasis(V)とします。任意のベクトル空間(たとえゼロ空間でも)基底は存在するので、次の命題が成立します。

  •  \forall V \in |{\bf FdVect}|.( Basis(V) \neq \emptyset)

記述を簡略化するために、自然数nに対して、1..n(イチ ピリオド2個 エヌ)を次の意味だと約束します。

  •  1..n := \{k\in {\bf N} \mid 1 \le k \le n \} = \{1, \cdots, n\}

特に、

  •  1..0 := \{\} = \emptyset
  •  1..1 := \{1\}

さて、ベクトル空間Vへの写像 φ:1..m → V がフレーム〈frame | 枠 | 標構〉だとは、m = dim(V) で、Im(φ)⊆V が基底になっていることです。ここで、Im(φ) は、写像φの像集合〈image〉です。フレームとは、基底ベクトル(基底集合の要素)の番号付け〈numbering〉をする写像です。フレームはベクトル空間への写像であることを憶えておいてください。ベクトル空間Vのすべてのフレームからなる集合をFrame(V)とします。

Vの部分集合とVへの写像はまったく違うものなのに、基底とフレームが混同されるのは、Basis(V)とFrame(V)を結びつけるメカニズムがあるからです。それは、Im:Frame(V) → Basis(V) という写像(写像に像集合を対応させる写像)です。Im:Frame(V) → Basis(V) が同型〈全単射〉ならば、Basis(V)とFrame(V)を同一視するのもアリですが、Imは(一般には)同型ではありません。次のような状況です。

  • 任意のベクトル空間Vに対して、Im:Frame(V) → Basis(V) は全射である。
  • 任意の基底 Φ∈Basis(V) に対して、逆像 Im-1(Φ) は有限集合で、Im-1(Φ) はm!個の要素を持つ(m = dim(V))

基底Φとフレームφは対応しますが、1:1の対応ではありません。dim(V) = 3 ならば、基底 Φ⊆V に対応するフレームは 3! = 6 個あります。例外的に1:1対応になるのは、dim(V) = 0, dim(V) = 1 のときだけです。

Basis(V)が空にはならないことと、Frame(V) → Basis(V) の全射があることから、Frame(V)も空にはなりません。つまり、どんなベクトル空間もフレームを持ちます。(ここでは、ベクトル空間=有限次元ベクトル空間。)

フレーム付きベクトル空間の圏、フレームと線形同型

ベクトル空間Vと、Vのフレームφの組 (V, φ) をフレーム付きベクトル空間〈vector space with frame | frame-fixed vector space | framed vector space〉と呼びます。フレーム付き(有限次元)ベクトル空間の圏FrmFdVectを次のように定義します。

  • |FrmFdVect| := (すべてのフレーム付きベクトル空間からなる(大きな)集合)
  • FrmFdVect(​(V, φ), (W, ψ)) := FdVect(V, W)
  • 恒等射と結合はFdVectと同じ。

射の定義に関しては特にフレームを考慮してなくて、単なる線形写像がFrmFdVectの射です。

これで、フレーム付きベクトル空間の圏FrmFdVectの定義はオシマイですが、フレームが線形写像を誘導することを見ておきましょう。

フレーム φ:1..m → V があると、線形写像 Rm → V が誘導されます。これは当たり前ですが、具体的に書き下すときの表記に悩むので、表記法を決めておきます。Rm の要素は、成分添字を上付きにして次のように書きます。

  •  \mbox{For }x\in {\bf R}^m,\: x = (x^i)^{i\in 1..m}

特定の添字iに対して xi は実数です。今の文脈では、上付き添字は累乗じゃありません

フレーム φ:1..m → V から誘導された線形写像を φ:Rm → V と書くことにして、φ の具体的表示は:

  •  \mbox{For }x\in {\bf R}^m,\\ \phi^\wedge(x) = \phi^\wedge( (x^i)^{i\in 1..m}   ) := {\displaystyle \sum_{i\in 1..m}x^i \phi(i)} \:\:\mbox{ in }V

型付きラムダ記法で書くなら:

  •  \phi^\wedge := \lambda\, x \in {\bf R}^m. \left( {\displaystyle \sum_{i\in 1..m}x^i \phi(i)} \:\:\in V \right)

(-) を入れ子の型付きラムダ記法で書くなら:

  •  (\mbox{-})^\wedge := \lambda\, \phi\in Frame(V).( \, \lambda\, x \in {\bf R}^m. \left( {\displaystyle \sum_{i\in 1..m}x^i \phi(i)} \:\:\in V \right) \:\:\in {\bf FdVect}({\bf R}^m, V) )

 \phi(i) \phi_i と書いて総和記号〈シグマ〉を省略すると、伝統的テンソル計算の記法になるのですが、ワケワカランことになるのでやめときます。

上付きのクサビ記号で書いた写像のプロファイル(域と余域)は次のようになります。

  •  (\mbox{-})^{\wedge} : Frame(V) \to {\bf FdVect}({\bf R}^m, V) \:\:\mbox{ where }m = dim(V)

実は、もっと一般的にできて:

  •  (\mbox{-})^{\wedge} : {\bf Set}(1..m, V) \to {\bf FdVect}({\bf R}^m, V) \:\:\mbox{ where }m = dim(V)

実は実は、有限次元の制限を外してさらに一般的にできて、集合Sに対して:

  •  (\mbox{-})^{\wedge} : {\bf Set}(S, V) \to {\bf Vect}({\bf R}^S, V)

ここで出てきた  {\bf R}^S は、集合Sから生成された自由ベクトル空間と呼ばれるベクトル空間を表します。 {\bf Set}(S, V) は考えてみると変ですね、Vは集合ではなくてベクトル空間だったので、忘却関手Uをかます必要があります。 {\bf R}^S も便宜的な略記なので代わりに  F(S) と書くことにすると:

  •  (\mbox{-})^{\wedge} : {\bf Set}(S, U(V) ) \to {\bf Vect}(F(S), V)

こっ、これは?! そうです; (-) は、F:SetVect (有限次元に限定しない)と U:VectSet の随伴性を与える写像だったのです。随伴の詳細は「圏論の随伴をちゃんと抑えよう」を見てください。

なお、随伴性を与える写像は、クサビ記号以外に、 (\mbox{-})^\ast, (\mbox{-})^\sharp, (\mbox{-})^\cap, (\mbox{-})^\sim などとも書かれます。決まった書き方はない(上付きにするとも限らない)ので注意してください。僕自身も上付き/下付きの使い方がバラバラです(あしからず)。さらに困ることは、随伴性を与える写像が暗黙に想定されているだけで、ハッキリとは定義されないときがあることです。自主的・自覚的に随伴構造を認識するしかないですね。

[補足][追記]随伴を与える写像の上付き/下付きの使い方を、割と最近の記事「モナド、クライスリ圏、随伴 の落ち穂拾い」と比較してみたら逆でしたね。

過去記事で使っていた記法; 随伴系の左関手を含むホムセットが左、右関手を含むホムセットが右になるように書いて、左から右への写像が転置〈transposition〉写像、右から左が反転置〈opposite-transposition〉写像です。

  • 転置写像 : ホム(左, *) → ホム(*, 右)
  • 反転置写像 : ホム(*, 右) → ホム(左, *)

そして、転置写像を後置上付き演算子記号、反転置写像を後置下付き演算子記号で書く約束でした。

今回だと、反転置写像を後置上付き演算子記号 (-) で書いています。左右に関する統一的ルールを決めて守るなんて、まー無理ですわ。そのへんが「恣意的でどうにも憶えられない」ことは次の記事に書いています。

[/追記][/補足]

話をフレームに戻すと、Vのフレーム φ:1..m → V から φ:Rm → V という線形写像が誘導されますが、誘導された線形写像は線形同型写像〈linear isomorphism〉になります。つまり、

  •  (\mbox{-})^{\wedge} : Frame(V) \to Iso{\bf FdVect}({\bf R}^m, V) \:\:\mbox{ where }m = dim(V)

ここで、 Iso{\bf FdVect}({\bf R}^m, V) は線形同型写像の集合です。上記の  (\mbox{-})^{\wedge} は可逆で、逆写像

  •  (\mbox{-})_{\vee} : Iso{\bf FdVect}({\bf R}^m, V) \to Frame(V) \:\:\mbox{ where }m = dim(V)

が在ります。逆写像の記述には、ベクトル空間Rm標準フレーム〈canonical frame〉が必要です。標準フレームとは、誰もが「これは標準的だ」と思っている写像 δm:1..m → Rm です。m = 3 ならば:


\begin{eqnarray}
 \delta^3(1) &:=& \begin{pmatrix}1 \\ 0 \\ 0 \end{pmatrix} \\
 \delta^3(2) &:=& \begin{pmatrix}0 \\ 1 \\ 0 \end{pmatrix} \\
 \delta^3(3) &:=& \begin{pmatrix}0 \\ 0 \\ 1 \end{pmatrix} \\
\end{eqnarray}

δ3(i) の意味は「3次元数ベクトル空間のi番目の標準的基底ベクトル」です。一般的・抽象的なベクトル空間では、標準的基底はないし、基底が指定されてもi番目という順番は無意味です。メチャクチャ特殊な状況であることに注意してください。

標準フレームを使って、 (\mbox{-})^{\wedge} の逆写像  (\mbox{-})_{\vee} を具体的に書けます。

  •  \mbox{For }f \in Iso{\bf FdVect}({\bf R}^m, V),\\ f_\vee := \lambda\, i \in 1..m. ( f( \delta^m(i) ) \:\:\in V)

入れ子の型付きラムダ記法で書くなら:

  •  (\mbox{-})_{\vee} := \lambda\,f \in Iso{\bf FdVect}.(\, \lambda\, i \in 1..m. ( f( \delta^m(i) ) \:\:\in V)\:\:\in Frame(V))

当たり前過ぎてうまく書き下せない写像を書き下したいときには、型付きラムダ記法が便利ですね。

線形同型 f:Rm → V に対する f がVのフレームになること、(-) と (-) がほんとに互いに逆であることは確認する必要があります。確認ができれば、次が言えたことになります。

  •  Frame(V) \cong Iso{\bf FdVect}({\bf R}^m, V) \:\:\mbox{ where }m = dim(V)

フレーム付きベクトル空間の圏と行列の圏

線形写像 f:V → W in FdVect は、行列で表示できます -- これは事実ですが、fだけから行列表示が出てくるわけではありません。V, W の基底を固定する必要がある -- と、そう言われるでしょう。このときの「基底」はフレームのことです。文字どおりの基底、つまりベクトル空間の部分集合のことだすれば、「基底を固定」しても行列表示が(一般的には)決まりません。「フレームを固定」してはじめて行列表示が決まります。

f:(V, φ) → (W, ψ) in FrmFdVect としましょう。fはやはり線形写像ですが、域と余域であるベクトル空間にはフレームが最初から固定されています。そうなるように圏FrmFdVectを定義しました(前節)。この状況設定なら、f(圏FrmFdVectの射)から行列が一意的に決まる感じはします。この「感じ」を正確に精密に記述します。

行列の圏Matは、次のような圏です。

  • |Mat| := N
  • Mor(Mat) := (すべての(実係数の)行列からなる集合)
  • A∈Mor(Mat) に対して、dom(A) := (Aの幅〈列数〉)、cod(A) := (Aの高さ〈行数〉)
  • A;B := BA (行列の掛け算が反図式順結合)
  • idn := In = (n次の単位行列)

[補足]行列の圏は具体的な圏なので、太字でMatと書くべきでしょう。そうしてないのは、単に僕の(根拠がない)習慣からです。行列の圏は小さい圏なので、太字で書く気がしないのです(ほんと根拠ない)。過去に太字で書いたMatを使ったことがあります-- 例えば「モナドの自由代数」参照。太字MatはMatとは別で、大きな圏として定義してます。

太字にしないまでも、TeXで書くときはローマン体にして固有名詞っぽくする、くらいはしたほうがいいかも知れません。
[/補足]

「線形写像を行列表示する」とは、圏FrmFdVectから圏Matへの“いい感じの”関手を構成することです。その“いい感じの”関手を G:FrmFdVect → Mat と置いて、Gをこれから構成します。

話を簡明にするために、Gを一度に作らないで、H:FrmFdVectFrmNumVect と K:FrmNumVect → Mat の2つに分けて、G = H*K としてGを定義します('*'は、関手の結合の図式順記号です)。中間の圏FrmNumVect(フレーム付き数ベクトル空間の圏)は次のように定義します。

  • |FrmNumVect| := (数ベクトル空間Rn(n∈N)に標準フレームδnを添えたフレーム付きベクトル空間 (Rn, δn) の全体、フレーム付きベクトル空間の可算無限集合)
  • (Rm, δm), (Rn, δn) ∈|FrmNumVect| に対して、FrmNumVect(​(Rm, δm), (Rn, δn)) := FdVect(Rm, Rn)
  • 恒等射と結合はFdVectと同じ。

[補足][追記]
ちょっとネーミングに失敗しました。圏FrmNumVectは、圏FrmFdVectの対象を数ベクトル空間に制限しただけではなくて、割り当てるフレームを標準フレーム〈規準フレーム | canonical frame〉だけに限定しています。Rnに標準フレーム以外を一緒に考えたものはFrmNumVectに入りません。

標準フレームだけに限定していることも名前に含めてCanFrmNumVectとかすべきでした。

もし、CanFrmNumVectを使い、圏FrmNumVectは“圏FrmFdVectの対象を数ベクトル空間に制限した充満部分圏”だとすると:

  • CanFrmNumVectFrmNumVectFrmFdVect

という包含系列ができて分かりやすかったですね。修正はしませんが、以下のFrmNumVectは、標準フレームに限定していることに注意してください。
[/追記][/補足]

FrmNumVectは、定義から圏FrmFdVetの充満部分圏になります。しばしば、FrmNumVectは行列の圏Matと同一視されますが、FrmNumVectFrmFdVect ですが Mat ⊆ FrmFdVect ではないので、今は区別します。圏がイッパイ出ててきて鬱陶しいですが、その代わり、微妙で曖昧な概念がクリアになるメリットがあります。

では、H:FrmFdVectFrmNumVect を定義しましょう。

  •  \mbox{For }(V, \phi)\in |{\bf FrmFdVect}|,\: H( (V, \phi) ) := ({\bf R}^{dim(V)}, \delta^{dim(V)})
  •  \mbox{For } f:(V, \phi) \to (W, \psi) \mbox{ in }{\bf FrmFdVect},\: H(f ) := \phi^\wedge ; f ; (\psi^\wedge)^{-1}

H(f) の定義がミソですが、下の可換図式を参照してください。


\require{AMScd}
\begin{CD}
{\bf R}^m                             @>{\phi^\wedge}>> V \\
@V{\phi^\wedge ; f ; (\psi^\wedge)^{-1}}VV             @VV{f}V \\
{\bf R}^n                            @>{\psi^\wedge}>> W
\end{CD} \\
\:\\
\mbox{commutative in }{\bf FdVect} \\
\mbox{where }m = dim(V),\; n = dim(W)

φ∈Frame(V), ψ∈Frame(W) なので、線形同型写像 φ:Rm → V, ψ:Rn → W が作れます。ψは同型〈可逆〉なので、逆写像 (ψ)-1 が取れます。Hがほんとに関手だと主張するには、Hが、結合と恒等を保存することを示す必要があります。上の可換図式をもとにして、気持ちよく示せると思います。

次に、K:FrmNumVect → Mat を定義しましょう。

  •  \mbox{For }({\bf R}^m, \delta^m)\in |{\bf FrmNumVect}|,\: K( ({\bf R}^m, \delta^m) ) := m
  •  \mbox{For } f:({\bf R}^m, \delta^m) \to ({\bf R}^n, \delta^n) \mbox{ in }{\bf FrmNumVect},\: K(f ) := mat(f)

mat(f) が“fの行列表示”ですが、これも具体的に露骨に〈explicitly〉書き下しておきます。

  •  \mbox{For } i\in 1..m,\, j\in 1..n,\: (mat(f))^j_i := \epsilon^j_n(f(\delta^m_i))
  •  \delta^m_i := \delta^m(i) \:\mbox{ (canonical frame)}
  •  \epsilon^j_n := \epsilon_n(j) := \lambda\, y \in {\bf R}^n.( y^j \:\in {\bf R})

εnRn標準コフレーム〈canonical coframe〉で、εn:1..n → FdVect(Rn, R) です。

Kが関手だと言えるには、Kが結合と恒等を保存することを示す必要があります。この部分は、線形写像と行列を繋ぐ議論そのものになります。線形代数の復習として確認してください。

G := H*K : FrmFdVect → Mat とすると、フレーム付きベクトル空間の圏から行列の圏への関手が得られます。この関手Gの存在が、次の事実に対応します。

  • フレームが固定されたベクトル空間のあいだの線形写像は、一意的に決まる行列によって表現できる。