有限体上の線形代数を探訪する ~ 双対空間編 ~

ここまで長らく有限体上の線形空間について考えてきた。本稿ではそのフィナーレとして、有限体上の線形空間の双対空間について考えてみる。

線形空間の双対空間

双対空間の定義をWikipedia[1]より引用する。

双対空間
 F上の任意のベクトル空間 Vの(代数的)双対空間 V^* V上の線型写像 \phi: V \to F(すなわち線型汎函数)全体の成す集合として定義される。集合としての V^*には、次の加法とスカラー乗法
 \displaystyle{
{\begin{aligned}
&(\varphi +\psi )(x)=\varphi (x)+\psi (x),\\
&(a\varphi )(x)=a(\varphi (x))\end{aligned}}
\quad (\varphi ,\psi \in V^{*},\,x\in V,\,a\in F)
}
を定義することができて、それ自身 F上のベクトル空間となる。

この定義で Fは体としか言っていないので、有限体でも問題なく意味を持つ。

双対基底

次に、双対基底の定義を同じくWikipedia[1]より引用する。

双対基底
 Vが有限次元ならば、 V^* Vと同じ次元を持つ。 Vの基底  \{e_1, \cdots , e_n\} から双対基底と呼ばれる特別な V^*の基底を定義することができる。それは V上の線型汎函数の集合 \{e^1, \cdots , e^n\}で、係数 c_i \in Fの選び方に依らず
 \displaystyle{
\mathbf {e} ^{i}(c_{1}\mathbf {e} _{1}+\cdots +c_{n}\mathbf {e} _{n})=c_{i}\quad (i=1,\ldots ,n)
}
を満たすものとして定義される(上付きの添字が冪を意味するものではないことに注意せよ)。

これも特別な体に限定した定義にはなっておらず、有限体でも妥当な定義である。

線形空間と双対空間の間の同型

実数体複素数体上の線形空間 Vの場合、有限次元であれば V V^*は同型になる。これは有限次元の場合は V V^*の次元が等しいことから明らかであり、有限体上の線形空間でも同様のことが言える。

具体例

ここまで確認したことを実際に計算してみよう。以下に \mathbb{F}_4上の3次元線形空間の双対空間や双対基底をsageを使って計算した例を示す。なお、プログラムの作成に当たってsageのドキュメント[2]のEXAMPLESを参考にした。

・計算プログラム

#!/usr/bin/env sage

from sage.all import *

def main():
    V = FiniteRankFreeModule(GF(4), 3, name='M', start_index=1)
    print(f"V: {V}")
    basis = V.basis('e')
    print(f"basis: {basis}")

    print(f"V^*: {V.dual()}")
    dual_basis = basis.dual_basis()
    print(f"dual_basis: {dual_basis}")

    for i, e in enumerate(basis):
        for j, f in enumerate(dual_basis):
            print(f"f_{j+1}(e_{i+1}) = {f(e)}")

if __name__ == "__main__":
    main()

・実行結果

% ./dual.py
V: 3-dimensional vector space M over the Finite Field in z2 of size 2^2
basis: Basis (e_1,e_2,e_3) on the 3-dimensional vector space M over the Finite Field in z2 of size 2^2
V^*: Dual of the 3-dimensional vector space M over the Finite Field in z2 of size 2^2
dual_basis: Dual basis (e^1,e^2,e^3) on the 3-dimensional vector space M over the Finite Field in z2 of size 2^2
f_1(e_1) = 1
f_2(e_1) = 0
f_3(e_1) = 0
f_1(e_2) = 0
f_2(e_2) = 1
f_3(e_2) = 0
f_1(e_3) = 0
f_2(e_3) = 0
f_3(e_3) = 1

Sageでは線形空間ではなく自由加群に対して双対空間や双対基底を計算できるようだったので、そちらを使用した。実際、線形空間は(加群が久々すぎて言い切る自信がないが)自由加群の特殊なケースのはずなので、特に問題はない。

また、最後にいわゆる二重直交性を確かめてみたが、問題なく成立していることが見て取れる。

まとめ

本稿では有限体上の線形空間の双対空間について考えた。双対空間についてはあまり面白いことはなく、普通のことが普通に成り立つということが分かった。

これにて有限体上の線形空間に関する記事のシリーズは一旦終わりにする。最近は数学以外にも勉強したいことが多くて時間の配分が難しいが、これまで通り数学も細々と続けていきたい。