双対空間と双対基底|定義・双対写像の表現行列が転置になる理由
ベクトルを 1 つの数へ送る線形写像を線形汎関数といいます。その全体を集めたものが双対空間 です。
の基底を 1 つ決めると、 にも対になる基底が決まります。条件はクロネッカーのデルタ 1 本です。
これを双対基底といいます。もとの空間とよく似た形をしていながら、写像の向きだけが裏返り、その裏返りが行列の転置として姿を現します。
線形汎関数
をベクトル空間とします。 から実数への線形写像を、 上の線形汎関数といいます。
行き先がベクトル空間ではなく数である、という点だけが違い、課される条件は線形写像のときと同じです。
線形写像の記事で見た定積分やトレースは、値が数になるので線形汎関数にあたります。一次形式や余ベクトルとも呼ばれます。
例:どんなものが線形汎関数になるか
値が数になる線形写像は、身近なところにいくつも転がっています。
のベクトルから第 2 成分だけを返す操作です。重みをつけた和 も同じ仲間になります。
多項式 に対して を返す操作です。和とスカラー倍がそのまま通るので線形になります。
区間を固定して、 に を対応させる操作です。積分の線形性がそのまま効いています。
正方行列 に対角成分の和を対応させる操作です。行列の空間の上に乗った線形汎関数になります。
どれも行き先が数なので、値どうしを足したり定数倍したりできます。この点が、次の節で を空間として扱える理由になります。
双対空間
上の線形汎関数をすべて集めたものを、 の双対空間といい と書きます。
には、値の側の計算で和とスカラー倍を入れます。
こう定めた と が、また線形汎関数になることは確かめられます。値の側で足し算をしているだけなので、線形性はそのまま受け継がれます。
したがって はそれ自身がベクトル空間です。ベクトルを集めた空間ではなく、ベクトルを測る道具を集めた空間だ、と読むと見通しがよくなります。
双対基底
の基底 を 1 つ固定します。各 について、次の条件を満たす線形汎関数 を考えます。
右辺は のとき 、そうでないとき を表す記号で、クロネッカーのデルタといいます。
基底の像を決めれば線形写像はただ 1 つに定まるので、この条件で は決まります。 にだけ を返し、他の基底ベクトルには を返す汎関数です。
こうして得た組 を、 の双対基底といいます。
双対基底は座標を取り出す
双対基底の正体は、座標を読む操作です。 に を当ててみます。
の項だけが残り、ほかは で消えます。つまり は、 の に関する第 座標そのものです。
<svg viewBox="0 0 460 205" width="100%" style="max-width:460px;display:block;margin:0 auto">
<text x="230" y="24" font-size="11" fill="#9a9a9a" text-anchor="middle">双対基底は、座標のうち 1 つだけを抜き出します</text>
<text x="185" y="52" font-size="11" fill="#1f1f1f" text-anchor="middle">v の座標</text>
<rect x="155" y="60" width="60" height="34" fill="#f5f5f5" stroke="#c8c8c8" stroke-width="1"></rect>
<rect x="155" y="94" width="60" height="34" fill="#1b81e0" fill-opacity="0.12" stroke="#1b81e0" stroke-width="1"></rect>
<rect x="155" y="128" width="60" height="34" fill="#f5f5f5" stroke="#c8c8c8" stroke-width="1"></rect>
<text x="185" y="82" font-size="12" fill="#1f1f1f" text-anchor="middle">c<tspan font-size="9" dy="3">1</tspan></text>
<text x="185" y="116" font-size="12" fill="#1b81e0" text-anchor="middle">c<tspan font-size="9" dy="3">2</tspan></text>
<text x="185" y="150" font-size="12" fill="#1f1f1f" text-anchor="middle">c<tspan font-size="9" dy="3">3</tspan></text>
<text x="62" y="116" font-size="13" fill="#1b81e0" text-anchor="middle">v<tspan font-size="9" dy="3">2</tspan><tspan font-size="10" dy="-8">*</tspan></text>
<line x1="85" y1="111" x2="142" y2="111" stroke="#1b81e0" stroke-width="1"></line>
<polygon points="142,107 150,111 142,115" fill="#1b81e0"></polygon>
<line x1="220" y1="111" x2="292" y2="111" stroke="#1b81e0" stroke-width="1"></line>
<polygon points="292,107 300,111 292,115" fill="#1b81e0"></polygon>
<text x="330" y="116" font-size="13" fill="#1b81e0" text-anchor="middle">c<tspan font-size="9" dy="3">2</tspan></text>
<text x="230" y="192" font-size="11" fill="#9a9a9a" text-anchor="middle">基底を決めた時点で、座標を読む操作そのものが道具として手に入っています</text>
</svg>基底を決めた時点で座標という仕組みが手に入りましたが、その座標を取り出す操作こそが の元だった、というのがこの節の中身です。
双対基底が基底になる理由
が の基底であることを確かめます。まず張ることを見ます。
を任意に取ります。線形写像は基底の像で決まるので、 の値さえ分かれば は決まります。
右辺を に当てると が出るので、両辺は基底の上で一致します。基底の上で一致する線形写像は同じものです。
一次独立も短く済みます。 とおいて に当てると、左辺は 、右辺は です。
すべての で が出るので、 は一次独立です。張ることと合わせて基底になります。
本数が なので が従います。ただしこの一致から得られる と の対応は、選んだ基底に寄りかかったものです。
基底を変えれば対応も変わってしまうので、 と を無条件に同じものとは見なせません。この点はあとでもう一度扱います。
例:3 次元で双対基底を書き下す
に次の基底を入れます。
を と書くと、成分ごとに 、、 という関係が出ます。
下から順に解けば 、、 です。これがそのまま双対基底になります。
検算します。、、 で、条件を満たしています。
標準基底のときと違い、 は第 成分をそのまま返しません。基底が傾けば、座標を読む式のほうも傾きます。
例:多項式の空間の双対基底
2 次以下の多項式の空間 に、基底 を入れます。 の座標は係数そのものでした。
双対基底は、その係数を取り出す汎関数です。 に対して 、、 をそれぞれ返します。
微分を使えば、見なれた式に書き直せます。、、 だからです。
テイラー展開の係数を取り出す操作が、そのまま双対基底になっていました。抽象的に定義した対象が、具体的な式で書けています。
例:汎関数を双対基底で展開する
の上の定積分 を、いまの双対基底で表します。展開の公式は でした。
基底の各元での値を計算します。
この 3 つがそのまま係数になります。
確かめます。 に当てると右辺は で、実際に積分した値と一致します。
積分という操作が、 の中では 3 つの数の組として書けました。汎関数もまた座標を持つ、ということです。
行ベクトルとして見る
で標準基底を取ると、線形汎関数の姿がはっきりします。 はかならず次の形に書けます。
ここで は で決まる列ベクトルです。つまり の双対空間は、行ベクトル全体だと思えます。
列ベクトルが の元、行ベクトルが の元で、並べて掛けると数が出ます。転置がその橋渡しをしています。
標準基底の双対基底は、単位行列の各行にあたります。 は第 成分を返す操作なので、行ベクトルとしては です。
基底を変えると双対基底は逆行列で動く
基底を取り替えると、双対基底も動きます。動く向きはもとの基底とは逆です。
から への変換行列を とします。新しい基底は でした。
新しい双対基底を と置き、条件 に代入します。
これがすべての で に等しいので 、つまり です。
基底が で動けば、双対基底は で動きます。座標が逆行列で移ったのと同じ食い違いが、こちらにも顔を出しています。
汎関数の座標のほうは事情が逆です。 の新しい座標は なので、係数を並べたベクトルには が掛かります。
例:基底を取り替えて確かめる
の標準基底から、次の基底へ移ります。
変換行列は 2 本を列に並べたもので、逆行列は行列式が であることから求まります。
の各行を係数として読めば、新しい双対基底が出ます。
検算すると 、 となり、条件が成り立っています。
の列を並べ替えるのではなく、 の行を読むのだ、という点が肝心です。ここを取り違えると符号や係数がずれます。
双対写像は向きが逆になる
線形写像 が与えられると、双対空間の間にも写像が誘導されます。ただし向きが裏返ります。
作り方は素直です。 の上の汎関数 に対して、 を先に通してから で測る操作を割り当てます。
は の上の汎関数です。 のベクトルを へ運んでから測っているので、全体としては を測っていることになります。
<svg viewBox="0 0 460 200" width="100%" style="max-width:460px;display:block;margin:0 auto">
<text x="230" y="24" font-size="11" fill="#9a9a9a" text-anchor="middle">ベクトルは前へ進み、測る道具は後ろへ戻ります</text>
<text x="130" y="80" font-size="14" fill="#1f1f1f" text-anchor="middle">V</text>
<text x="330" y="80" font-size="14" fill="#1f1f1f" text-anchor="middle">W</text>
<line x1="150" y1="75" x2="302" y2="75" stroke="#1b81e0" stroke-width="1"></line>
<polygon points="302,71 310,75 302,79" fill="#1b81e0"></polygon>
<text x="226" y="66" font-size="12" fill="#1b81e0" text-anchor="middle">T</text>
<text x="130" y="155" font-size="14" fill="#1f1f1f" text-anchor="middle">V<tspan font-size="10" dy="-5">*</tspan></text>
<text x="330" y="155" font-size="14" fill="#1f1f1f" text-anchor="middle">W<tspan font-size="10" dy="-5">*</tspan></text>
<line x1="310" y1="150" x2="158" y2="150" stroke="#d0562a" stroke-width="1"></line>
<polygon points="158,146 150,150 158,154" fill="#d0562a"></polygon>
<text x="230" y="141" font-size="12" fill="#d0562a" text-anchor="middle">T<tspan font-size="10" dy="-5">*</tspan></text>
<line x1="130" y1="92" x2="130" y2="132" stroke="#c8c8c8" stroke-width="1" stroke-dasharray="4 3"></line>
<line x1="330" y1="92" x2="330" y2="132" stroke="#c8c8c8" stroke-width="1" stroke-dasharray="4 3"></line>
<text x="230" y="190" font-size="11" fill="#9a9a9a" text-anchor="middle">点線は双対を取る対応です。矢印の向きだけが裏返ります</text>
</svg>向きが裏返るのは、汎関数が測る側だからです。ベクトルが前へ運ばれるぶん、測る道具は後ろへ引き戻されます。
を の双対写像、または転置写像といいます。この名前の理由は次の節で見えます。
双対写像の表現行列は転置になる
の基底を 、 の基底を とし、 の表現行列を とします。
双対基底 と に関する の表現行列を求めます。 を に当ててみます。
前の節で見たとおり、汎関数を基底ベクトルに当てた値がその座標です。したがって の展開は次のようになります。
表現行列は、像の座標を列に並べたものでした。第 列に が縦に並ぶので、これは の第 行を立てたものにほかなりません。
行が列になった行列、つまり が の表現行列です。転置という成分の入れ替えが、双対を取るという操作と同じ内容だった、ということになります。
例:転置になることを数値で確かめる
を次の式で定めます。
標準基底での表現行列は、像の座標を列に並べて得られます。
の双対基底は、第 1 成分を返す と第 2 成分を返す です。まず を計算します。
となるので、この汎関数の座標は です。
同じように で、座標は になります。2 本を列に並べれば の表現行列です。
の行がそのまま列に立ちました。 という型も、 の をひっくり返したものになっています。
消滅部分空間
部分空間 に対して、 の上で恒等的に になる汎関数を集めます。これを の消滅部分空間といい、 と書きます。
を測っても何も出てこない道具の全体だ、と読めます。 が の部分空間になることは、定義から直ちに出ます。
の上で になるものどうしを足しても定数倍しても、やはり の上で のままだからです。
次元には簡単な関係があります。
証明には次元定理を使います。 から への写像を、 にその への制限を対応させることで作ります。
この写像は全射です。 の基底を の基底まで延長しておけば、 の上で与えられた汎関数を 全体へ広げられるからです。
核のほうは定義そのままで になります。次元定理から が出て、 と を入れれば目的の式です。
例:平面を消す汎関数
の中で を満たすベクトル全体を とします。2 次元の部分空間です。
の上で になる汎関数を探します。 と置きます。
の元は なので、条件は がすべての で成り立つことです。
したがって となり、 だけが自由に残ります。 は を読む汎関数の定数倍の全体で、次元は です。
となって公式に合っています。この平面を潰してしまう汎関数は、平面から外れたぶんだけを読むものに限られる、というわけです。
理解の確認
線形写像 の表現行列が のとき、双対写像 について正しいのはどれでしょうか。
- で、表現行列は のまま変わらない
- で、表現行列は の転置になる
- で、表現行列は の逆行列になる
二重双対と自然な同型
もベクトル空間なので、その双対 を考えられます。これを二重双対といいます。
から への写像は、基底を使わずに作れます。 に、汎関数を受け取って での値を返す操作を対応させます。
を固定して のほうを動かす、という読み替えです。 は の上の線形汎関数なので、 の元になります。
有限次元では が同型です。 なら となる が取れるので単射で、次元が等しいことから全射も従います。
大事なのは、この同型が基底を選ばずに書けている点です。
次元は等しいので同型ですが、対応をつけるには基底を 1 つ選ぶ必要があります。基底を変えれば対応も変わります
値を読むという操作だけで書けるので、基底を選ばずに決まります。こちらを自然な同型と呼びます
自然な同型があるおかげで、有限次元では と を同じものだと思って差し支えありません。
無限次元では崩れる
ここまでの話は、有限次元だから成り立っています。無限次元では様子が変わります。
次数に制限をつけない多項式全体の空間では、 の次元が の次元より真に大きくなります。基底のそれぞれに好きな値を割り当てた汎関数が、いくらでも作れるからです。
から への写像は単射のままですが、全射になりません。 は の真の部分空間にとどまります。
無限次元で双対を扱うときは、連続性のような条件を足して集める汎関数を絞ります。関数解析はそこから始まる分野です。
他の話題とのつながり
内積を入れると、 と の対応を基底なしに作れるようになります。ベクトル に を割り当てる仕組みで、リースの表現定理と呼ばれます。内積空間の話が済んでからの話題です。
双対写像の表現行列が転置になることは、転置の記事で見た と同じ内容です。あちらは内積で、こちらは汎関数の言葉で書いた形になっています。
微分幾何では、接ベクトルの空間の双対に住む対象を微分形式と呼びます。座標の微小変化を表す記号が、双対基底にあたります。
テンソルを扱うときは、 の元と の元を区別して数えます。反変と共変という呼び分けは、基底を変えたときにどちらの向きへ動くかの違いです。













汎関数は測る側なので、T が V から W へ進むのに対して T∗ は W∗ から V∗ へ戻ります。表現行列は (T∗wi∗)(vj)=wi∗(Tvj)=aij から読み取れて、A の行が列に立った A⊤ になります。逆行列は出てきませんし、そもそも A が正方行列とはかぎりません。