非常にややこしい気がする双対空間の考えだが、冷静にとらえると当たり前である気がする話.

## はじめに
線形代数を勉強していると、ちらほら出てくるのが「双対空間」。

抽象度が高く、「ベクトル空間」と「双対空間」が準同型とか、「双対空間はベクトル空間を入力空間にもつ線形汎関数の集合」とかいわれても、？？なんで関数とベクトルの間に関係性があるんだ？？とか非常に混乱した。

また、物理でテンソルを勉強するとまた出会うことになり、「別の空間のはずなのに、なんで座標空間中にあるかのように書かれるのか？」など、正直意味が分からなかった。

ただ、最近ふと改めて考えてみると、「ん？なんかこれ、当たり前のことを抽象的に言っているだけなのでは？？」という気がしてきたので、ポエムとしてまとめてみた。




## 1.双対空間の定義
まず、双対空間の定義について
以下の$V$を$\mathbb{C}$に写す線型汎函数（ベクトル空間からその係数体への線型写像。そうでない場合もあるが、単純に言えばは$V$を$\mathbb{C}$へ写すの線形写像の事）の集合からなるベクトル空間で
```math
V^{*} =Hom( V,\mathbb{C})
```
※ Homは線形汎関数の集合をあわらす
また、その基底は、Vの基底が$\displaystyle \{v_{1} ,v_{2} ,\dotsc ,v_{n}\}$であるとき、
```math
f_{i}( v_{j}) =\delta _{i}{}_{j} \ ( j=1,2,\dotsc ,n) \ 
```
を満たす関数である. 
また、双対空間の双対空間 $V^{**} $ を考えると、
```math
\begin{gather*}
V^{**} =\ Hom\left( V^{*} ,\mathbb{C}\right)\\
i:f\mapsto f( v) \ ,\ f\in V^{*} \ ,\ f( v) \in \mathbb{C}
\end{gather*}
```
となるようなベクトル空間で、これは$V$と同型であり、$V$そのものとみなしても（なにしろこれは、$\displaystyle f$の引数とすると$\displaystyle f( v) =c$となるような$v$を出力する関数なので常に出力は$v$である）よい.
そのため、$\displaystyle V$と$\displaystyle V^{*}$は互いに双対の関係にあるという.
なんだか小難しいし、理屈はわかったような気がしたが、長い間ピンとこなかった。

## 2. 双対性
ベクトル$v$と関数$f$が双対の関係性にある、ということに初めは不思議な気がした.
が、ある日ふと気が付いたが、これは線型汎函数の対称性によるもので、$x = (x_1,x_2,...,x_n) $のベクトルとし、一般の線形汎関数を$f$とすると、
```math
f( x) =f_{1} x_{1} +f_{2} x_{2} +\dotsc +f_{n} x_{n}
```
を以下のように書き直しても
```math
x( f) =x_{1} f_{1} +x_{2} f_{2} \dotsc +x_{n} f_{n}
```
同じなので、線形汎関数は、関数と引数のベクトルは双対で交換可能な性質がある.
それがそのまま、空間に反映しただけともいえる.
きわめて直感的で当たり前のことのような気がしてきた。

だって、双対空間の線形汎関数はベクトルとしてとらえて、例えば、
$f(x)=3x_1 + 4x_2 + 5x_3$なら$f$をベクトルとして考えると

$f = (3,4,5)$ 
$x = (1,2,3)$ とすると

$f(x)=3\*1 + 4\*2 + 5\*3 $ であり、

逆に$x$を双対空間のベクトルと考えて、
$x(f)=1f_1+2f_2+3f_3$ という関数を表し、$f=(3,4,5)$を引数を表すベクトルとして
$x(f)=1\*3 + 2\*4 + 3\*5$ としてもまったく同じことである。

そりゃそうか、という感じがするし、これってベクトルの内積そのものじゃん、ということでもある。
「ある関数が引数をとることと、内積を同一視する」ような記載を本でたまに見るが、この文脈では確かに同じである。

## 3. 双対基底
双対基底の定義もなんだか無理やりな気がしてピンとこなかった。ただ、これも時間がたつうちに当たり前で自然な気がしてきた。

双対空間の基底は
```math
\begin{equation*}
f_{i}( v_{j}) =\delta _{i}{}_{j} \ ( j=1,2,\dotsc ,n) \ 
\end{equation*}
```
は
```math
\begin{equation*}
< f_{i} ,v_{j}  >=\delta_{i}{}_{j} \ ( j=1,2,\dotsc ,n) \ 
\end{equation*}
```
とも表される. 関数とベクトルが直交したりするのは奇妙に感じた.
が、これもそもそもの行列の（高校でならったような）成立過程からすると当たり前で、例えば
```math
\begin{equation*}
f( v) =3x+4y+5z
\end{equation*}
```
のような1次関数を抽象化して
```math
f=\begin{bmatrix}
2 & 3 & 4
\end{bmatrix}\begin{bmatrix}
x\\
y\\
z
\end{bmatrix}
```

としている.この時点で$\displaystyle \begin{bmatrix}
2 & 3 & 4
\end{bmatrix} \in V^{*}$であり、$\displaystyle \begin{bmatrix}
x\\
y\\
z
\end{bmatrix} \in V$ である.
そもそも、双対空間のベクトルが関数を表すことは、初めて行列の計算を学習した時に既に前提とされていたとも言える.

計算するためには、単純に２つのベクトルの内積を取ればよいが、$\displaystyle f=\begin{bmatrix}
2 & 3 & 4
\end{bmatrix} ,v=\begin{bmatrix}
x\\
y\\
z
\end{bmatrix}$として、
$\displaystyle < f,v >=2x+3y+4z$
とシンプルに計算するための条件は、2つのベクトルの基底が、$\displaystyle f_{i} ,v_{j}$をそれぞれの基底として、

```math
\begin{equation}
< f_{i} ,v_{j}  >=\delta _{i}{}_{j} \ ( j=1,2,\dotsc ,n) \ 
\end{equation}
```
となることで、これは双対基底の定義そのものである.

もし、上記の(1)の条件を満たさない場合は
```math
\begin{equation*}
< f,v >\ =2x< f_{1} ,v_{1}  >+2y< f_{1} ,v_{2}  >\dotsc +3y< f_{2} ,v_{2}  >+\dotsc +4z< f_{3} ,v_{3}  >
\end{equation*}
```
 を計算する必要がある. 上を満たすことで、基底を意識せず演算が可能になる.

式の見た目上、ベクトルが直交して見えるのも考えてみれば直感的である.
列ベクトル空間に対して、行ベクトル空間が双対空間をなす、ということも含めて、あらためて考えてみると自然な定義であり、ある意味あたりまえに感じる.