数学記号記法一覧(集合・線形代数・テンソル代数)

公開:2020/10/14
更新:2020/10/17
34 min読了の目安(約31200字TECH技術記事
Likes47

数学記号記法一覧

普段私が用いているルールに則った記号・記法の一覧。私の専門の都合上、情報系の機械学習・数理最適化(線形代数、微積分、微分幾何など)に偏っており、プログラミング言語理論(論理学、圏論)や暗号・符号(群、環、体)の方面はほとんど書いていない。

本記事の内容のほとんどは一般的な表記に則っているため、他の本や論文を読むときに索引してもよい(一部独自表記を含むがその際はそう明記する)。

記号についてあまり詳しい解説はしない。

  • 実際に表示される記号
  • なんという名前の概念に対応しているか
  • LaTeX コマンド

などを書いておくので、わからなければ各自調べてほしい。

定義

AABBにより定義するとき、以下のような表記が用いられる。どれを用いるかは好みの問題である。

表記 LaTeX 備考
A=BA = B A = B 不親切で誤解を招くがよく使われる
A=defBA \stackrel{\mathrm{def}}{=} B A \stackrel{\mathrm{def}}{=} B あまり見かけない
A:=BA := B A := B 工学部っぽい
ABA \equiv B A \equiv B 理学部っぽい
AdefBA \stackrel{\mathrm{def}}{\equiv} B A \stackrel{\mathrm{def}}{\equiv} B 一番親切で誤解がない
A:BA :\Leftrightarrow B A :\Leftrightarrow B 見たことない
AdefBA \stackrel{\mathrm{def}}{\Leftrightarrow} B A \stackrel{\mathrm{def}}{\Leftrightarrow} B 見たことない

但し書き

数式の前後に文章で断りを入れるのが面倒くさいときは、数式中に但し書きを入れることがある。

表記 LaTeX 意味
let\mathrm{let} \mathrm{let} (以下の数式において)この条件を課す
\therefore \therefore (前の数式の結論として)ゆえに
\because \because (前の数式が導出されたのは)なぜならば
where\mathrm{where} \mathrm{where} (前の数式を説明するために)ただし
if\mathrm{if} \mathrm{if} (前の数式は)以下の条件のもとで
otherwise\mathrm{otherwise} \mathrm{otherwise} if\mathrm{if}を受けて)それ以外

たとえば「xx00以上の実数とする。このxxx2=3x ^ 2 = 3を満たす。ゆえにx=3x = \sqrt{3}である(なぜならばx0x \geq 0だから)」は

letxR,x0:x2=3x=3(x0) \begin{aligned} \mathrm{let} \,\, x \in \mathbb{R}, x \geq 0: \,\, x ^ 2 = 3 \\ \therefore x = \sqrt{3} \quad (\because x \geq 0) \end{aligned}

と書ける。LaTeX だと綺麗に配置するのがしんどいが、手書きのときなどは適宜改行やインデントをしてよい。

他にも「y=ReLU(x)y=\operatorname{ReLU}(x)である。ただしReLU(x)\operatorname{ReLU}(x)x0x \geq 0のときxxをそのまま出力し、その他では00を取る関数である」は

y=ReLU(x)whereReLU(x)={xifx00otherwise y = \operatorname{ReLU}(x) \quad \mathrm{where} \,\, \operatorname{ReLU}(x) = \begin{cases} x &\mathrm{if} \,\, x \geq 0 \\ 0 &\mathrm{otherwise} \end{cases}

と書ける。ちなみに上記の数式はそれぞれ

\begin{aligned}
\mathrm{let} \,\, x \in \mathbb{R}, x \geq 0: \,\, x ^ 2 = 3 \\
\therefore x = \sqrt{3} \quad (\because x \geq 0)
\end{aligned}
y = \operatorname{ReLU}(x) \quad \mathrm{where} \,\, \operatorname{ReLU}(x) = \begin{cases}
x &\mathrm{if} \,\, x \geq 0 \\
0 &\mathrm{otherwise}
\end{cases}

で出力している。

集合

複数のものを集めて扱うとき、数学では集合(set)という対象を用いる。

基本的な集合

集合 表記 LaTeX
自然数の集合 N\mathbb{N} \mathbb{N}
整数の集合 Z\mathbb{Z} \mathbb{Z}
実数の集合 R\mathbb{R} \mathbb{R}
複素数の集合 C\mathbb{C} \mathbb{C}
任意の体 K\mathbb{K} \mathbb{K}

範囲を限定するとき

00より大きい」とか「00以上の」といった指定を整数の集合や実数の集合につけたいときは右下添字で簡易的に書かれることがある。「より大きい」は大なり(>>)を用いるからよいが、「以上の」にはちょっと気取った大なりイコール(\geqslant)を用いるので一瞬ビックリする。

集合 表記 LaTeX
0より大きい整数 Z>0\mathbb{Z} _ {> 0} \mathbb{Z} _ {> 0}
0以上の自然数 Z0\mathbb{Z} _ {\geqslant 0} \mathbb{Z} _ {\geqslant 0}
0より大きい実数 R>0\mathbb{R} _ {> 0} \mathbb{R} _ {> 0}
0以上の自然数 R0\mathbb{R} _ {\geqslant 0} \mathbb{R} _ {\geqslant 0}

集合の演算

A,BA, Bを任意の集合とする。

演算 表記 LaTeX
ABA \cup B A \cup B
ABA \cap B A \cap B
ABA \setminus B A \setminus B

複数の集合A1,A2,,AnA _ 1, A _ 2, \ldots, A _ nで和や積を取るときは以下の表記が用いられる。

i=1nAidefA1A2Ani=1nAidefA1A2An \begin{aligned} \bigcup _ {i=1} ^ n A _ i &\stackrel{\mathrm{def}}{\equiv} A _ 1 \cup A _ 2 \cup \cdots \cup A _ n \\ \bigcap _ {i=1} ^ n A _ i &\stackrel{\mathrm{def}}{\equiv} A _ 1 \cap A _ 2 \cap \cdots \cap A _ n \end{aligned}

LaTeX コマンドはそれぞれ\bigcup _ {i=1} ^ n\bigcap _ {i=1} ^ nである。

集合の元と量化子

aaが集合AAの元であるとき、aaAA属するといい、aAa \in Aと表記する。たとえばxxが実数であることを主張するときはxRx \in \mathbb{R}と書く。

表記 LaTeX 意味
aAa \in A a \in A aaは集合AAの元である

「任意の実数に対して」のように指定する記号は量化子と呼ばれる。

量化子 表記 LaTeX 用法 意味
全称量化 \forall \forall xX\forall x \in X 集合XXのすべての元xxについて/任意のxxについて
存在量化 \exists \exists xX\exists x \in X 集合XXのある元xxについて/xxが存在して
唯一存在量化 !\exists! \exists! !xX\exists! x \in X 集合XXのある唯一の元xxについて/唯一のxxが存在して

包含関係

集合A,BA, Bがまったく同じ元を持つとき集合AABBは等しいといいA=BA=Bで表す。集合AAの元がすべて集合BBにも属しているとき、集合AAは集合BB含まれるといいABA \subset Bと表す。このときAABBの部分集合(subset)であるという。

AABBが等しいときでも「集合AAの元がすべて集合BBにも属している」という条件を満たすので「AABBの部分集合である」といえる。集合AAが集合BBに含まれるが等しくはないとき、AABBの真部分集合(true subset)であるという。

ABA \subset Bという表記の場合、それがA=BA=Bを含意するかどうかについて明確な決まりはない。文脈から判断するしかないが、まともな書き手であれば必ず最初の方で断りを入れているはずなので探したほうがよい。より親切な書き手ならば真部分集合(\subsetneq)か部分集合(\subseteq)で書いているはずである。

表記 LaTeX 意味
A=BA = B A = B 集合A,BA,Bは等しい
ABA \subset B A \subset B 集合AAは集合BBの(真)部分集合である
ABA \subsetneq B A \subsetneq B 集合AAは集合BBの真部分集合である
ABA \subseteq B A \subseteq B 集合AAは集合BBの部分集合であるかまたは等しい

外延表記と内包表記

集合を定義するときは主に外延的定義と内包的表記という方法がある。

外延表記

集合の要素をすべて書き下して集合を定義する記法を外延的定義(extensional definition)という。この表記の仕方自体のことは日本語では「外延表記」というが、英語では "Roster notation" という。

表記例 LaTeX
A={1,2,3}A = \{ 1, 2, 3 \} A = \{ 1, 2, 3 \}
A={1,2,,n}A = \{ 1, 2, \ldots, n \} A = \{ 1, 2, \ldots, n \}

内包表記

集合の要素が満たすべき条件を書き下して集合を定義する記法を内包的定義(intensional definition)という。この表記の仕方自体のことは日本語では「内包表記」というが、英語では "set-builder notation" という。

表記例 LaTeX
A={x1xn}A = \{ x \mid 1 \leq x \leq n \} A = \{ x \mid 1 \leq x \leq n \}

集合の直積

複数の集合からひとつずつ元を選んで作られる組を元とする新たな集合を定義するとき、この集合をもとの集合のデカルト積(Cartesian product)または直積(direct product)という。集合A,BA, Bの直積CCを内包表記で定義すれば

C=A×Bdef{(a,b)aA,bB} C = A \times B \stackrel{\mathrm{def}}{\equiv} \{ (a,b) \mid a \in A, b \in B \}

である。

同じ集合AAnn個についての直積はAnA ^ nと簡略表記される。

AndefA×A××An A ^ n \stackrel{\mathrm{def}}{\equiv} \underbrace{A \times A \times \cdots \times A}_{n個}

ちなみに上の式はA ^ n \stackrel{\mathrm{def}}{\equiv} \underbrace{A \times A \times \cdots \times A}_{n個}というコマンドで出力できる。

写像(対応、写像、関数)

高校で習うような関数は、大学の基礎的な集合論ではより一般的な写像や対応といった概念に拡張される。大学以降でもっともよく使うのはおそらく写像である。定義とか意味は本題ではないので各自調べること。

対応(correspondence)は集合AAの元から集合BBの元への対応関係のうちで、イメージ的には多対多のものを言う。状況が一般化されすぎていて扱いづらいのであまり用いられない。

写像(map)は集合AAの元から集合BBの元への対応関係のうちで、イメージ的には多対一のものを言う。状況が適度に一般化されていて扱いやすいのでよく用いられる。ちなみに一対一で対応している特殊ケースの写像は単射(injection)という。

関数(function)は写像のうちで終域(BBのほう)が数の集合(R,Z\mathbb{R}, \mathbb{Z}など)となるものを指す。つまり写像の特殊ケースである。

対応、写像、関数は大抵の場合、同じ表記が用いられるので写像で代表する。

集合AAから集合BBへの写像ffを考えるとき、AAを始域、BBを終域といいf ⁣:ABf \colon A \to Bと書く。特にxAx \in Af(x)Bf(x) \in Bに写されることまで明記するときはf ⁣:AB ⁣:xf(x)f \colon A \to B \colon x \mapsto f(x)のように書く。

表記 LaTeX
f ⁣:ABf \colon A \to B f \colon A \to B
f ⁣:AB ⁣:xf(x)f \colon A \to B \colon x \mapsto f(x) f \colon A \to B \colon x \mapsto f(x)

たとえばf(x)=x2f(x) = x ^ 2も、より厳密に書きたいならば

f ⁣:RR0 ⁣:xx2f ⁣:CR ⁣:xx2 \begin{aligned} f &\colon \mathbb{R} \to \mathbb{R} _ {\geqslant 0} \colon x \mapsto x ^ 2 \\ f &\colon \mathbb{C} \to \mathbb{R} \colon x \mapsto x ^ 2 \end{aligned}

のようになる。

写像によく使われる文字

表記 LaTeX
ff f
gg g
hh h
FF F
GG G
HH H
γ\gamma \gamma
Γ\Gamma \Gamma
ϕ\phi \phi
φ\varphi \varphi
ψ\psi \psi

少し発展的な内容

集合族

集合を集めた集合を集合族(family of sets)または集合系(system of sets)という。たとえばA,B,CA,B,Cがいずれも集合であるとき、集合

P={A,B,C}\mathfrak{P} = \{ A, B, C \}

は集合族である。LaTeX コマンドの筆記体(\mathcal)、ドイツ文字(\mathfrak)、花文字(\mathscr)などの飾り文字で表されることがあり、大体初見では読めない。飾り文字は『数学記号記法一覧(文字装飾・ギリシャ文字・飾り文字)』にすべて列挙するが、よく出てくるのは以下。

文字 \mathcal \mathfrak \mathscr
A A\mathcal{A} A\mathfrak{A} A\mathscr{A}
B B\mathcal{B} B\mathfrak{B} B\mathscr{B}
C C\mathcal{C} C\mathfrak{C} C\mathscr{C}
D D\mathcal{D} D\mathfrak{D} D\mathscr{D}
F F\mathcal{F} F\mathfrak{F} F\mathscr{F}
O O\mathcal{O} O\mathfrak{O} O\mathscr{O}
P P\mathcal{P} P\mathfrak{P} P\mathscr{P}
V V\mathcal{V} V\mathfrak{V} V\mathscr{V}
X X\mathcal{X} X\mathfrak{X} X\mathscr{X}
Y Y\mathcal{Y} Y\mathfrak{Y} Y\mathscr{Y}
Z Z\mathcal{Z} Z\mathfrak{Z} Z\mathscr{Z}

以下の位相空間、測度空間では集合族を扱うので覚えておくとよい。

位相空間

イメージ的には「近さ」とか「点から点への繋がり」といった構造が入った集合のこと。集合の和(無限個まで)と集合の積(有限個まで)について閉じた集合系である開集合系か、距離構造を直接入れた近傍系を用いて定義されることが多い。

「近さ」が定義されていないと「近づく」ことができないし、「点から点への繋がり」が定義されていないと「どういった近づき方ができるか」がわからないので、極論、微分が定義できない。同様にして派生する概念である「点と点がどれくらい離れてるか」も測れないので積分も定義できない。

つまり微分とか積分が定義されている空間には大体、位相空間の構造が入っている。

測度空間

イメージ的には「部分集合の大きさ」の構造が入った集合のこと。集合の補演算と集合の和(可算無限個まで)について閉じた集合系であるσ\sigma-加法族を用いて定義される。σ\sigma-加法族は完全加法族ともいう。

積分するのに重要だった「点と点がどれくらい離れてるか」という概念は、一般化すれば「部分集合の大きさ」になるので、位相空間を介さなくても部分集合の大きさのほうを直接定義しにいけば積分自体は定義可能である。

高校で習う、位相空間に基づいた積分はリーマン積分(Riemann integral)、大学以降で習う、測度空間に基づいた積分はルベーグ積分(Lebesgue integral)という。

線形代数

情報系にとってはコンピュータで扱う関係上、有限次元の行列と数ベクトルが主な対象になる。数学できる人からは「それは線形代数ではなく算数だ」などと揶揄される。

ベクトル空間

ベクトル空間(vector space)とは簡単にはベクトルの加法スカラー乗法の2種類の演算について閉じた空間である。ベクトル空間にはU,V,WU, V, Wなどの文字がよく使われる。

ベクトル空間の元をベクトル(vector)という。ベクトルにはu,v,w,x,y,zu,v,w,x,y,zなどの文字が使われることが多いが、どんな文字も割り当てられうる。

工学・物理学系の書籍ではベクトルは太字でv{\bm v}や矢印をつけてv\vec{v}とされることが多いが、数学書や論文ではスカラーと同じ書体でvvのように書かれることが多いので注意。

ベクトルの表記 LaTeX 受ける印象
vv v 数学寄り
v{\bm v} {\bm v} 情報寄り
v\vec{v} \vec{v} 物理寄り

コンピュータ上では扱いやすさの関係上、体R\mathbb{R}上の有限次元実数ベクトル空間がよく使われる。dd次元の実数ベクトル空間の元はdd個の実数の組で表せるため直積を用いてRd\mathbb{R} ^ dと表記される。

表記 LaTeX 意味
vVv \in V v \in V vvはベクトル空間VVの元である
xRdx \in \mathbb{R} ^ d x \in \mathbb{R} ^ d xxdd次元実数ベクトル空間Rd\mathbb{R} ^ dの元である

ベクトルの表記

dd次元実数ベクトル空間Rd\mathbb{R} ^ dの元は直積で定義されているから、()()の中に並べて書ける。横に並べて書くときは行ベクトルという。

x=(x1,x2,,xd)Rd x = (x _ 1, x _ 2, \ldots, x _ d) \in \mathbb{R} ^ d

一方で、縦に並べて書くときは列ベクトルという。

x=(x1x2xd)Rd x = \left( \begin{matrix} x _ 1 \\ x _ 2 \\ \vdots \\ x _ d \end{matrix} \right) \in \mathbb{R} ^ d

ちなみにこれらはそれぞれ

x = (x _ 1, x _ 2, \ldots, x _ d) \in \mathbb{R} ^ d
x = \left(
\begin{matrix}
x _ 1 \\
x _ 2 \\
\vdots \\
x _ d
\end{matrix}
\right) \in \mathbb{R} ^ d

というコマンドで出力している。

ベクトルの転置

行と列の並びの方向を入れ替える操作を転置(transpose)という。つまり

(x1,x2,,xd)T=(x1x2xd),(x1x2xd)T=(x1,x2,,xd) (x _ 1, x _ 2, \ldots, x _ d) ^ \mathrm{T} = \left( \begin{matrix} x _ 1 \\ x _ 2 \\ \vdots \\ x _ d \end{matrix} \right), \quad \left( \begin{matrix} x _ 1 \\ x _ 2 \\ \vdots \\ x _ d \end{matrix} \right) ^ \mathrm{T} = (x _ 1, x _ 2, \ldots, x _ d)

である。行列演算の都合上、ベクトルは列ベクトルで定義されることが多い。また、紙面節約のため、列ベクトルはx=(x1,x2,,xd)Tx = (x _ 1, x _ 2, \ldots, x _ d) ^ \mathrm{T}と行ベクトルを転置して書くことも多い。

内積

ベクトルどうしの内積V×VRV \times V \to \mathbb{R}は中点(\cdot)か、角括弧(<,>\left< \cdot, \cdot \right>)を用いて表す。実数ベクトルどうしであれば、uRnu \in \mathbb{R} ^ nvRnv \in \mathbb{R} ^ nの内積は

<u,v>defuTv=i=1nuivi \left< u, v \right> \stackrel{\mathrm{def}}{\equiv} u ^ \mathrm{T} v = \sum _ {i=1} ^ n u _ i v _ i

で定義される。

また、関数f(x),g(x)f(x),g(x)は無限次元ベクトル空間X\mathscr{X}の元とみなすことができて、関数どうしの内積を以下のように積分で定義することもある。

<f,g>deff(x)g(x)dx \left< f, g \right> \stackrel{\mathrm{def}}{\equiv} \int f(x) g(x) dx

他にも、ヒルベルト空間H\mathcal{H}や再生核ヒルベルト空間K\mathcal{K}の内積というのも、機械学習のカーネル法を勉強していると出てくるが、どの空間での内積かを明記するときは下付き添字を用いて

<,>H,<,>K \left< \cdot, \cdot \right> _ \mathcal{H}, \left< \cdot, \cdot \right> _ \mathcal{K}

のようにする。

u,vVu,v \in Vの内積 LaTeX 備考
uvu \cdot v u \cdot v 簡易的
<u,v>\left< u , v \right> \left< u, v \right> 一般的なので定義は都度要確認
uTvu ^ \mathrm{T} v u ^ \mathrm{T} v 有限次元実数ベクトル空間V=RnV = \mathbb{R} ^ n
u(x)v(x)dx\int u(x) v(x) dx \int u(x) v(x) dx 無限次元実数ベクトル空間V=XV = \mathscr{X}
<,>H\left< \cdot, \cdot \right> _ \mathcal{H} \left< \cdot, \cdot \right> _ \mathcal{H} ヒルベルト空間V=HV = \mathcal{H}
<,>K\left< \cdot, \cdot \right> _ \mathcal{K} \left< \cdot, \cdot \right> _ \mathcal{K} 再生核ヒルベルト空間V=KV = \mathcal{K}

また、Markdown記法の関係上、表の中には書けなかったが、あとで紹介するブラ-ケット記法(bra-ket notation)の<uv>\left< u | v \right>、双対性を表す内積の[u,v]\left[ u , v \right]というものもある。これらは少し変わった内積なのであとで説明する。

ノルム

ベクトルの「大きさ」や「長さ」に相当する概念である。

ベクトルxVx \in Vのノルム ⁣:VR\| \cdot \| \colon V \to \mathbb{R}は、普通は自分自身との内積の平方根によって与えられるユークリッドノルム(Euclid norm)を用いる。

xdef<x,x> \| x \| \stackrel{\mathrm{def}}{\equiv} \sqrt{\left< x, x \right>}

これは有限次元実数ベクトルxRnx \in \mathbb{R} ^ nであれば、

x=i=1nxi2=x12+x22++xn2 \| x \| = \sum _ {i=1} ^ n x _ i ^ 2 = x _ 1 ^ 2 + x _ 2 ^ 2 + \cdots + x _ n ^ 2

となる。有限次元実数ベクトル空間ではこの他にpp-ノルムまたはLpL ^ pノルムと呼ばれるノルムp ⁣:VR\| \cdot \| _ p \colon V \to \mathbb{R}も定義される。LpL ^ pノルムはpR1p \in \mathbb{R} _ {\geqslant 1}について定義されていて、

xpdef(i=1nxip)1p \| x \| _ p \stackrel{\mathrm{def}}{\equiv} \left( \sum _ {i=1} ^ n |x _ i| ^ p \right) ^ {\frac{1}{p}}

である。ただし| \cdot |は絶対値記号である。これはp=2p=2のときユークリッドノルムに一致している。p+p \to +\inftyの極限で定義されるLL ^ \inftyノルムもあり、これは「xxの要素のうちで絶対値が最大のもの」を表す。

x=max{x1,x2,,xn} \| x \| _ \infty = \operatorname{max} \{ |x _ 1|, |x _ 2|, \ldots, |x _ n| \}

ちなみにこの式は以下のコマンドで出力している。

\| x \| _ \infty = \operatorname{max} \{ |x _ 1|, |x _ 2|, \ldots, |x _ n| \}

また、本来pp11以上が想定されているが、スパースモデリングなどではp0p \to 0の極限で定義されるL0L ^ 0ノルムも用いられることがあり、これは「xxの要素のうちで00でないものの個数」を表す。

他にも、ノルムを直接定義したバナッハ空間、内積からノルムを定義できるヒルベルト空間、再生核ヒルベルト空間、ヒルベルト空間に関数としての性質が追加された関数空間などでも定義され、どの空間でのノルムかを下付き添字で明記することもある(バナッハ空間のみ添字なしが多い)。

xVx \in Vのノルム LaTeX 備考
x\| x \| \| x \| この表記は一般のノルムを指すのでどんなノルムかは都度要確認
x\| x \| \| x \| バナッハ空間(バナッハ空間はベクトル空間とは限らない)
xH\| x \| _ \mathcal{H} \| x \| _ \mathcal{H} ヒルベルト空間V=HV=\mathcal{H}
xK\| x \| _ \mathcal{K} \| x \| _ \mathcal{K} 再生核ヒルベルト空間V=KV=\mathcal{K}
xRnx \in \mathbb{R} ^ nのノルム LaTeX 備考
x\| x \| \| x \| ユークリッドノルム
x2\| x \| _ 2 \| x \| _ 2 ユークリッドノルム
xp\| x \| _ p \| x \| _ p LpL ^ pノルム
x\| x \| _ \infty \| x \| _ \infty LL ^ \inftyノルム(要素の絶対値が最大のもの)
x0\| x \| _ 0 \| x \| _ 0 L0L ^ 0ノルム(00でない要素の数)

行列(線形変換)

nn次元実数ベクトル空間Rn\mathbb{R} ^ nの元に対する線形変換RnRm\mathbb{R} ^ n \to \mathbb{R} ^ m行列(matrix)で表すことができる。線形変換(linear transform)または線形写像(linear map)は線形性を満たす写像のことである。

nn次元実数ベクトル空間Rd\mathbb{R} ^ dの元xxに対する線形変換AAは、一般にm×nm \times n個の数を縦横に並べて

A=(a11a12a1na21a22a2nam1am2amn)Rm×n A = \left( \begin{matrix} a _ {11} & a _ {12} & \cdots & a _ {1n} \\ a _ {21} & a _ {22} & \cdots & a _ {2n} \\ \vdots & \vdots & \ddots & \vdots \\ a _ {m1} & a _ {m2} & \cdots & a _ {mn} \\ \end{matrix} \right) \in \mathbb{R} ^ {m \times n}

のように書く。iijj列目で代表して

A=Aij,A=aij A = A _ {ij}, A = a _ {ij}

のように定義することもあり、単にAijA _ {ij}と言われたときは、それが行列なのか、行列のiijj番目の要素なのかに注意する必要がある

特にm=1m=1のときのf ⁣:RnRf \colon \mathbb{R} ^ n \to \mathbb{R}線形汎関数(linear functional)といい、

f=(a1a2an)Rn f = \left( \begin{matrix} a _ {1} & a _ {2} & \cdots & a _ {n} \end{matrix} \right) \in \mathbb{R} ^ {n}

のように行ベクトルで表される。

行列をmm個の線形汎関数f(i) ⁣:RnRf _ {(i)} \colon \mathbb{R} ^ n \to \mathbb{R}を縦に並べたものとして考えるとき

A=(f(1)f(2)f(m)) A = \left( \begin{matrix} f _ {(1)} \\ f _ {(2)} \\ \vdots \\ f _ {(m)} \end{matrix} \right)

と解釈することがあり、同様にnn個のmm次元ベクトルx(j)Rmx _ {(j)} \in \mathbb{R} ^ mを横に並べたものとして考えるとき

X=(x(1)x(2)x(n)) X = \left( \begin{matrix} x _ {(1)} & x _ {(2)} & \cdots & x _ {(n)} \end{matrix} \right)

と解釈することもある。

行列の転置

ベクトルに転置を定義したように行列にも転置が定義される。

AT=(a11a12a1na21a22a2nam1am2amn)T=(a11a21am1a12a22am2a1na2namn)Rn×m A ^ \mathrm{T} = \left( \begin{matrix} a _ {11} & a _ {12} & \cdots & a _ {1n} \\ a _ {21} & a _ {22} & \cdots & a _ {2n} \\ \vdots & \vdots & \ddots & \vdots \\ a _ {m1} & a _ {m2} & \cdots & a _ {mn} \\ \end{matrix} \right) ^ \mathrm{T} = \left( \begin{matrix} a _ {11} & a _ {21} & \cdots & a _ {m1} \\ a _ {12} & a _ {22} & \cdots & a _ {m2} \\ \vdots & \vdots & \ddots & \vdots \\ a _ {1n} & a _ {2n} & \cdots & a _ {mn} \\ \end{matrix} \right) \in \mathbb{R} ^ {n \times m}

零行列

零行列ORn×nO \in \mathbb{R} ^ {n \times n}は正方行列のうちですべての成分が00のものである。

零行列 LaTeX
OO O

単位行列

単位行列InRn×nI _ n \in \mathbb{R} ^ {n \times n}は正方行列のうちで対角成分がすべて11、その他がすべて00の行列である。

In=(100010001) I _ n = \left( \begin{matrix} 1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1 \\ \end{matrix} \right)

単位行列のサイズが自明なときは単にIIとも書かれ、IIの代わりに文字EEが用いられることもある。

また、単位行列の要素はクロネッカーのデルタδij\delta _ {ij}で定義することができるので、単にδij\delta _ {ij}と書かれているものが単位行列を指していることもある。

I=δijwhereδij={1ifi=j0otherwise I = \delta _ {ij} \quad \mathrm{where} \,\, \delta _ {ij} = \begin{cases} 1 & \mathrm{if} \,\, i = j \\ 0 & \mathrm{otherwise} \end{cases}
単位行列 LaTeX
II I
InI _ n I _ n
EE E
EnE _ n E _ n
δij\delta _ {ij} \delta _ {ij}

逆行列

正方行列ARn×nA \in \mathbb{R} ^ {n \times n}が正則ならば、逆行列が唯一つ存在し、それをA1A ^ {-1}と表記する。

逆行列は以下の性質を満たす。

AA1=A1A=I A A ^ {-1} = A ^ {-1} A = I
逆行列 LaTeX
A1A ^ {-1} A ^ {-1}

行列式

正方行列に対しては行列式(determinant)det(A)\operatorname{det}(A)が定義できる。

det(A)\operatorname{det}(A)は、ARn×nA \in \mathbb{R} ^ {n \times n}を、nn次元ベクトルをnn本、行ごとに並べたものとみなすとき、そのnn本のベクトルがつくる図形(n=2n=2ならば平行四辺形、n=3n=3ならば平行六面体、それ以上は超立体)の符号付き体積に一致する。

行列式 LaTeX
det(A)\operatorname{det}(A) \operatorname{det}(A)

行列の対角和(トレース)

正方行列に対しては対角成分の総和演算であるトレース(trace)が定義できる。

tr(A)=i=1naii \operatorname{tr}(A) = \sum _ {i=1} ^ n a _ {ii}
行列の対角和 LaTeX
tr(A)\operatorname{tr}(A) \operatorname{tr}(A)

行列の内積

行列はあくまで線形写像の表記の一種に過ぎず、ARm×nA \in \mathbb{R} ^ {m \times n}m×nm \times n次元のベクトルとみなしてもよい(行列の和とスカラー倍は、ベクトル空間の公理としてのベクトルの和とスカラー倍にそのまま用いることができる)。

ベクトルだとみなしたら内積やノルムを定義したくなるのが道理であり、行列A,BRm×nA, B \in \mathbb{R} ^ {m \times n}にも内積<,> ⁣:Rm×n×Rm×nR\left< \cdot, \cdot \right> \colon \mathbb{R} ^ {m \times n} \times \mathbb{R} ^ {m \times n} \to \mathbb{R}が定義される。行列の内積はベクトル同様、位置が対応する成分どうしをかけたあとで、すべて足し合わせる。

<A,B>=tr(ATB)=i=1mj=1naijbij \left< A, B \right> = \operatorname{tr}(A ^ \mathrm{T} B) = \sum _ {i=1} ^ m \sum _ {j=1} ^ n a _ {ij} b _ {ij}

tr(ATB)\operatorname{tr}(A ^ \mathrm{T} B)という書き方がよく好まれるが、正直わかりにくいと思う。Python で計算するときもnumpy.trace(A.T.dot(B))とするよりnumpy.sum(A * B)で計算したほうが速い。

他にもベクトルの内積と同様にABA \cdot Bと書かれることもある。

行列の内積 LaTeX
ABA \cdot B A \cdot B
<A,B>\left< A, B \right> \left< A, B \right>
tr(ATB)\operatorname{tr}(A ^ \mathrm{T} B) \operatorname{tr}(A ^ \mathrm{T} B)

行列のノルム

行列の内積から誘導されるノルムはフロベニウスノルム(Frobenius norm)と呼ばれF ⁣:Rm×nR\| \cdot \| _ F \colon \mathbb{R} ^ {m \times n} \to \mathbb{R}で表記される。

AFdefi=1mj=1naij2=<A,A> \| A \| _ F \stackrel{\mathrm{def}}{\equiv} \sqrt{\sum _ {i=1} ^ m \sum _ {j=1} ^ n a _ {ij} ^ 2} = \sqrt{\left< A, A \right>}

Python で計算するときはnumpy.linalg.norm(A)で計算できる。

行列YRm×nY \in \mathbb{R} ^ {m \times n}を、行列XRm×p,WRn×pX \in \mathbb{R} ^ {m \times p}, W \in \mathbb{R} ^ \mathbb{n \times p}

Y^=XWT \hat{Y} = X W ^ \mathrm{T}

と近似したいとき、二乗誤差はフロベニウスノルムの二乗で書けるためよく見かける。たとえばXXが固定の最小二乗法ならば、目的関数f(W)f(W)

f(W)=YY^F2=YXWTF2 f(W) = \| Y - \hat{Y} \| _ F ^ 2 = \| Y - X W ^ \mathrm{T} \| _ F ^ 2

と書ける。

行列のノルム LaTeX 備考
A\| A \| \| A \| 一般的なノルムを表す表記のため定義は都度要確認
AF\| A \| _ F \| A \| _ F フロベニウスノルム

行列の随伴

複素数C\mathbb{C}共役(conjugate)の概念を複素数ベクトルCn\mathbb{C} ^ nや複素数行列Cm×n\mathbb{C} ^ {m \times n}に拡張したのが随伴(adjoint)である。

実数ベクトルは転置すればそのベクトルに対応した線形汎関数を得ることができたのだが、複素数ベクトルに同様の概念を考えようとすると転置するだけでは不十分で、転置した上で各要素で複素共役を取らねばならない(リースの表現定理より)。この操作を随伴といいAA ^ \astAA ^ \daggerで表す。

Aの随伴Aの随伴 LaTeX
AA ^ \ast A ^ \ast
AA ^ \dagger A ^ \dagger
A=(a11a12a1na21a22a2nam1am2amn)=(aˉ11aˉ21aˉm1aˉ12aˉ22aˉm2aˉ1naˉ2naˉmn)Rn×m A ^ \dagger = \left( \begin{matrix} a _ {11} & a _ {12} & \cdots & a _ {1n} \\ a _ {21} & a _ {22} & \cdots & a _ {2n} \\ \vdots & \vdots & \ddots & \vdots \\ a _ {m1} & a _ {m2} & \cdots & a _ {mn} \\ \end{matrix} \right) ^ \dagger = \left( \begin{matrix} \bar{a} _ {11} & \bar{a} _ {21} & \cdots & \bar{a} _ {m1} \\ \bar{a} _ {12} & \bar{a} _ {22} & \cdots & \bar{a} _ {m2} \\ \vdots & \vdots & \ddots & \vdots \\ \bar{a} _ {1n} & \bar{a} _ {2n} & \cdots & \bar{a} _ {mn} \\ \end{matrix} \right) \in \mathbb{R} ^ {n \times m}

エルミート内積

2つの複素数ベクトルx,yCnx, y \in \mathbb{C} ^ nの内積Cn×CnC\mathbb{C} ^ n \times \mathbb{C} ^ n \to \mathbb{C}は随伴を用いて

<x,y>defxy=i=1nxˉiyi \left< x, y \right> \stackrel{\mathrm{def}}{\equiv} x ^ \dagger y = \sum _ {i=1} ^ n \bar{x} _ i y _ i

のように定義される。

ブラ-ケット記法による内積

量子力学や量子情報理論における波動関数は無限次元複素数ベクトルで表現できるので、ある粒子の状態を記述する波動関数はその粒子の状態ベクトルとも呼ばれる。波動関数ψ(x)\psi(x)で表現される粒子の存在確率は自身とのエルミート内積

<ψψ>defψ(x)ψ(x)dx \left< \psi | \psi \right> \stackrel{\mathrm{def}}{\equiv} \int \psi(x) ^ \dagger \psi(x) dx

で表される。ψ(x)\psi(x) ^ \daggerψ(x)\psi(x)の随伴である。

こう書くと<ψψ>\left< \psi | \psi \right><ψ\left< \psi \right|ψ>\left| \psi \right>に分けて、それぞれベクトルだと思いたくなる。なった人がいた。それで、

ψ(x)=ψ>ψ(x)=<ψ \begin{aligned} \psi(x) &= \left| \psi \right> \\ \psi(x) ^ \dagger &= \left< \psi \right| \end{aligned}

と書くことにして、<ψ\left< \psi \right|をブラベクトル(bra vector)、ψ>\left| \psi \right>をケットベクトル(ket vector)と呼ぶことになった。ブラベクトルが行ベクトルでケットベクトルが列ベクトルに対応している。随伴を取ると互いに入れ替わるので

ψ>=<ψ,<ψ=ψ> \left| \psi \right> ^ \dagger = \left< \psi \right|, \quad \left< \psi \right| ^ \dagger = \left| \psi \right>

である。

量子ビット

古典情報理論で扱うビット(bit)は0011かで情報を表したが、量子情報理論で登場する量子ビット(qubit: quantum bit の略)は0>\left| 0 \right>1>\left| 1 \right>の重ね合わせ(線形和)で状態を表す。

0>,1>C2\left| 0 \right>, \left| 1 \right> \in \mathbb{C} ^ 2

0>def(10),1>def(01) \left| 0 \right> \stackrel{\mathrm{def}}{\equiv} \left( \begin{matrix} 1 \\ 0 \end{matrix} \right), \quad \left| 1 \right> \stackrel{\mathrm{def}}{\equiv} \left( \begin{matrix} 0 \\ 1 \end{matrix} \right)

と定義されており、複素数α,βC(α2+β2=1)\alpha, \beta \in \mathbb{C} \, (|\alpha|^2 + |\beta|^2=1)を用いて

ψ>=α0>+β1>=(αβ) \left| \psi \right> = \alpha \left| 0 \right> + \beta \left| 1 \right> = \left( \begin{matrix} \alpha \\ \beta \end{matrix} \right)

と表現できるψ>\left| \psi \right>11量子ビットの表現できる情報の範囲である。先程、量子状態の観測確率は状態ベクトルの自身とのエルミート内積で表されると言った。量子ビットは理論的には観測に失敗することを考慮していない。つまり確率110011のどちらかの状態が観測されるものとするから、先に断りを入れたように

<ψψ>=(αˉβˉ)(αβ)=αˉα+βˉβ=α2+β2=1 \left< \psi | \psi \right> = \left( \begin{matrix} \bar{\alpha} & \bar{\beta} \end{matrix} \right) \left( \begin{matrix} \alpha \\ \beta \end{matrix} \right) = \bar{\alpha}\alpha + \bar{\beta}\beta = |\alpha| ^ 2 + |\beta| ^ 2 = 1

を要請するのである。

量子ビットは観測したときに結果が0011に定まる。量子ビットが保持しているのは「どちらが何%の確率で観測されるか」という情報である。0,10, 1が観測される確率をそれぞれp0,p1p _ 0, p _ 1とおくと、

p0=α2p1=β2 \begin{aligned} p _ 0 = |\alpha| ^ 2 \\ p _ 1 = |\beta| ^ 2 \end{aligned}

である。

0>=10>+01> \left| 0 \right> = 1 \cdot \left| 0 \right> + 0 \cdot \left| 1 \right>

であるから、0>\left| 0 \right>p0=1,p1=0p _ 0 =1, p _ 1 = 0で「必ず00が観測される」ことを意味し、これは古典ビットの00に対応する状態になる。同様にして1>\left| 1 \right>は古典ビットの11に対応する。

複数量子ビットは量子ビットどうしのテンソル積\otimes\otimes)で定義される。テンソルやテンソル積についてはテンソル代数の章で説明するが、

z>=x>y>wherex>=(x0x1),y>=(y0y1) \left| z \right> = \left| x \right> \otimes \left| y \right> \quad \mathrm{where} \,\, \left| x \right> = \left( \begin{matrix} x ^ 0 \\ x ^ 1 \end{matrix} \right), \left| y \right> = \left( \begin{matrix} y ^ 0 \\ y ^ 1 \end{matrix} \right)

とするとき、

zijdefxiyj z ^ {ij} \stackrel{\mathrm{def}}{\equiv} x ^ i y ^ j

により定義される。添え字が上付きなのは反変成分表示していることを意味する(下付きだと共変成分表示の意味になる)。反変とか共変というのが何を意味しているかわからない人は、量子情報理論ではあまり気にしなくてよく、ただのベクトルの成分表示だと思ってよい。

zzには添字が2つついているので、ijij成分をiijj列目に行列表示すると、

z>=(x0y0x0y1x1y0x1y1) \left| z \right> = \left( \begin{matrix} x ^ 0 y ^ 0 & x ^ 0 y ^ 1 \\ x ^ 1 y ^ 0 & x ^ 1 y ^ 1 \end{matrix} \right)

となる。これが22量子ビットで表現可能な情報量である。いまは添字が2つだからいいが、33量子ビット以上になると添字が3つ以上になり行列では書けないので、量子情報理論の文脈では縦に並べ直すことが多い。

z>=(x0y0x0y1x1y0x1y1) \left| z \right> = \left( \begin{matrix} x ^ 0 y ^ 0 \\ x ^ 0 y ^ 1 \\ x ^ 1 y ^ 0 \\ x ^ 1 y ^ 1 \end{matrix} \right)

これは表記の仕方の問題なので本質的には意味は変わらない。さて、この規則に従って

00>def0>0>=(1000),01>def0>1>=(0100)10>def1>0>=(0010),11>def1>1>=(0001) \begin{aligned} \left| 00 \right> \stackrel{\mathrm{def}}{\equiv} \left| 0 \right> \otimes \left| 0 \right> = \left( \begin{matrix} 1 \\ 0 \\ 0 \\ 0 \end{matrix} \right), & \quad \left| 01 \right> \stackrel{\mathrm{def}}{\equiv} \left| 0 \right> \otimes \left| 1 \right> = \left( \begin{matrix} 0 \\ 1 \\ 0 \\ 0 \end{matrix} \right) \\ \left| 10 \right> \stackrel{\mathrm{def}}{\equiv} \left| 1 \right> \otimes \left| 0 \right> = \left( \begin{matrix} 0 \\ 0 \\ 1 \\ 0 \end{matrix} \right), & \quad \left| 11 \right> \stackrel{\mathrm{def}}{\equiv} \left| 1 \right> \otimes \left| 1 \right> = \left( \begin{matrix} 0 \\ 0 \\ 0 \\ 1 \end{matrix} \right) \end{aligned}

とおく。0>,1>\left| 0 \right>, \left| 1 \right>のときの議論と同様にして、00>,01>,10>,11>\left| 00 \right>, \left| 01 \right>, \left| 10 \right>, \left| 11 \right>はそれぞれ古典ビットの00,01,10,1100, 01, 10, 11に対応する。

z>=z0000>+z0101>+z1010>+z1111> \left| z \right> = z ^ {00} \left| 00 \right> + z ^ {01} \left| 01 \right> + z ^ {10} \left| 10 \right> + z ^ {11} \left| 11 \right>

と基底展開できる。00>\left| 00 \right>の観測確率p00p _ {00}

p00=z002 p _ {00} = |z ^ {00}|^2

で表され、01>,10>,11>\left| 01 \right>, \left| 10 \right>, \left| 11 \right>の観測確率p01,p10,p11p _ {01}, p _ {10}, p _ {11}に関しても同様である。

3量子ビット以降についても以下同様で、一般にnn量子ビットは2n2 ^ n通りのすべての可能性の観測確率を保持しているため、複数量子ビットに対する操作が可能になれば莫大な情報を内部的に保持した演算が可能になる。これが量子コンピュータが期待されている所以である。

テンソル代数

情報系にとってはコンピュータで扱う関係上、多次元配列として扱うことになる。でもカッコつけたいばかりに多次元配列をテンソルなどと呼んだ日には数学できる人に「それ本当にテンソルなの?」「テンソルにする意味あった?」って半笑いで詰められて死ぬ。

行列とは線形写像の表記の仕方の一種であり、それに対する操作(和、差、行列積など)とセットになって初めて「行列」としての意味を持つのであって、ただデータを2次元配列に詰め込んだだけのものは厳密には行列とは言わない。行列と「みなす」ことができるだけである。同様に多次元配列もテンソルの表記の仕方の一種に過ぎない。

特にテンソルの文脈では、表現の仕方によっては「配列を転置することがどういう意味を持つか」などについて注意を払わねばならない。自分がどういった表現を採用していて、その表現において行う操作が数学的にどんな操作に対応するか把握しておくべきである。

ベクトルの基底展開

nn次元ベクトル空間では線形独立なnn個のベクトルを選べば、それらの線形和でそのベクトル空間のすべての点を表現することができる。そのようにして選んだnn本のベクトルの集合をそのベクトル空間の基底(basis)といい、基底に属するベクトルは基底ベクトル(basis vector)という。基底ベクトルにはeeという文字が好まれる。

B={e1,e2,,en} B = \{ e _ 1, e _ 2, \ldots, e _ n \}

基底はベクトルの集合なので、厳密にはその要素について並び順を考慮しない。したがって「1番目の基底ベクトル」といってもどれを指すか本来はわからない(という意地悪をする人がいるかもしれない)。

基底ベクトルの順序を固定したときは、より正確には順序付けられた基底(ordered basis)とかフレーム: frame)と呼ばれる。でも逆に名前がマイナーでわかりにくいので私は単に「基底」と呼んでしまう。

ベクトルaVa \in Vを基底ベクトルe1,e2,,enVe _ 1, e _ 2, \ldots, e _ n \in Vの線形和で表す形式を、ベクトルの線形基底展開(linear basis expansion)という。たとえばV=RnV = \mathbb{R} ^ nであれば、ベクトルaaに対して係数w1,w2,,wnRw ^ 1, w ^ 2, \ldots, w ^ n \in \mathbb{R}が唯一通り存在して、

a=w1e1+w2e2++wnen a = w ^ 1 e _ 1 + w ^ 2 e _ 2 + \cdots + w ^ n e _ n

と書ける(添字を上付きにしたのは、あとで出てくる反変を表す添字だからである)。

基底ベクトルは列ごとに、係数は行ごとに並べて、

X=(e1e2en),w=(w1w2wn) X = \left( \begin{matrix} e _ 1 & e _ 2 & \cdots & e _ n \end{matrix} \right), \quad w = \left( \begin{matrix} w ^ 1 \\ w ^ 2 \\ \vdots \\ w ^ n \end{matrix} \right)

とすれば、先程の基底展開は行列表記で

a=Xw a = Xw

と書ける。

イメージがわかない人は基底は座標系、基底展開の係数は座標だと思ってくれればよい。たとえばe1=(1,0)T,e2=(0,1)Te _ 1 = (1, 0) ^ \mathrm{T}, e _ 2 = (0, 1) ^ \mathrm{T}とすればよく使うデカルト座標系のxx軸とyy軸を表すベクトルになるし、w=(2,3)Tw = (2, 3) ^ \mathrm{T}はそこでの点(2,3)(2,3)に対応する。

重要なのは、基底ベクトルは互いに直交していなくてもよいということである。基底ベクトルがすべて互いに直交している座標系は直交座標系(orthigonal coordinate system)、そうでない座標系は斜交座標系(oblique coordinate system)という。

基底ベクトルがすべて互いに直交している基底は直交基底(orthogonal basis)、さらにすべての基底ベクトルのノルムが11であるとき正規直交基底(orthonormal basis)という。

基底ベクトル基底ベクトル LaTeX 備考
eie _ i e _ i 数学寄り
ei{\bm e} _ i {\bm e} _ i 物理・情報寄り
ei\vec{e} _ i \vec{e} _ i なぜかあまり見ない
i,j,k{\bm i}, {\bm j}, {\bm k} {\bm i}, {\bm j}, {\bm k} 電磁気学のx,y,zx,y,z
i,j,k\vec{i}, \vec{j}, \vec{k} \vec{i}, \vec{j}, \vec{k} 電磁気学のx,y,zx,y,z

双対ベクトル空間

ベクトル空間VVには必ず双対ベクトル空間(dual vector space)VV ^ \astが存在する。さらに

xdef<x,>V x ^ \ast \stackrel{\mathrm{def}}{\equiv} \left< x , \cdot \right> _ V

で対応するxVx ^ \ast \in V ^ \astが唯一通り存在する(リースの表現定理)。ただし<,>V\left< \cdot , \cdot \right> _ Vはベクトル空間VVにおける内積である。

上の定義がよくわからないという人は、V=RnV = \mathbb{R} ^ nならば転置、V=CnV = \mathbb{C} ^ nならば随伴と覚えておけばよい。

x=xTx=x \begin{aligned} x ^ \ast &= x ^ \mathrm{T} \\ x ^ \ast &= x ^ \dagger \end{aligned}

もとのベクトル空間VVの元を列ベクトルで表記しているならば、双対ベクトル空間VV ^ \astの元は行ベクトルで表記する(と都合がいい、あくまで表記の問題)。ブラ-ケット記法の章も読んでいるならば、

x=x>Vx=<xV \begin{aligned} x &= \left| x \right> \in V \\ x ^ \ast &= \left< x \right| \in V ^ \ast \end{aligned}

になっていることに気付くだろう。

また、双対ベクトル空間の双対ベクトル空間はもとのベクトル空間とみなせる。すなわち、

(V)=V(x)=x \begin{aligned} (V ^ \ast) ^ \ast = V \\ (x ^ \ast) ^ \ast = x \end{aligned}

が成り立つ。

表記表記 LaTeX 備考
VV ^ \ast V ^ \ast ベクトル空間VVの双対ベクトル空間
xx ^ \ast x ^ \ast ベクトルxxに対応する双対ベクトル

双対性を表す内積

双対ベクトル空間VV ^ \astの元はベクトル空間VVの元と一対一で対応しているので、どちらか一方の空間からもう一方の空間へ点を写せば、ベクトルxVx ^ \ast \in V ^ \astyVy \in Vの間で内積[,] ⁣:V×VK\left[ \cdot, \cdot \right] \colon V ^ \ast \times V \to \mathbb{K}を取ることができる(ただしK\mathbb{K}は任意の体でVVK\mathbb{K}上のベクトル空間、何言ってるかわからない人はK=R,V=Rn\mathbb{K} = \mathbb{R}, V = \mathbb{R} ^ nの場合だけ考えればよい)。これを双対性を表す内積(duality pairing)という。

[x,y]def<(x),y>V=<x,y>V \left[ x ^ \ast, y \right] \stackrel{\mathrm{def}}{\equiv} \left< (x ^ \ast) ^ \ast, y \right> _ V = \left< x, y \right> _ V

V=RnV = \mathbb{R} ^ nならばx=xTx ^ \ast = x ^ \mathrm{T}だから、

[x,y]=xTy \left[ x ^ \ast, y \right] = x ^ \mathrm{T} y

とそのまま行列積を取ればよい。V=CnV = \mathbb{C} ^ nならば例のごとく転置が随伴に拡張される。

誤解がない場合や、書き手が面倒くさがりだったりすると単に<x,y>\left< x ^ \ast, y \right>と書かれることがある。

また、ブラ-ケット記法では<xy>\left< x | y \right>となる(<x\left< x \right|xx ^ \astを意味しているため\astが外れていることに注意)。

xVx ^ \ast \in V ^ \astyVy \in Vの内積 LaTeX 備考
[x,y]\left[ x ^ \ast, y \right] \left[ x ^ \ast, y \right] 双対性を表す内積
xTyx ^ \mathrm{T} y x ^ \mathrm{T} y V=RnV=\mathbb{R} ^ nのとき
xyx ^ \dagger y x ^ \dagger y V=CnV=\mathbb{C} ^ nのとき
<x,y>\left< x ^ \ast, y \right> \left< x ^ \ast, y \right> 伝わるが若干不親切

案の定、ブラ-ケット記法は Markdown の仕様上、表内に書けないので書いていない。

双対基底

双対ベクトル空間もベクトル空間なので基底が定義できる。その中でも重要なのが、もとのベクトル空間に基底をひとつ定めたときに、それに対応して唯一つ定まる双対基底(dual basis)である。

双対基底B={e1,e2,,en}VB ^ \ast = \{ e ^ 1, e ^ 2, \ldots, e ^ n \} \subset V ^ \astとは、もとのベクトル空間の基底をB={e1,e2,,en}VB = \{ e _ 1, e _ 2, \ldots, e _ n \} \subset Vと定めたとき、以下の条件

[ei,ej]={1ifi=j0otherwise \left[ e ^ i, e _ j \right] = \begin{cases} 1 & \mathrm{if} \,\, i = j \\ 0 & \mathrm{otherwise} \end{cases}

を満たすものを言う。これは正規直交基底が満たす条件

<ei,ej>={1ifi=j0otherwise \left< e _ i, e _ j \right> = \begin{cases} 1 & \mathrm{if} \,\, i = j \\ 0 & \mathrm{otherwise} \end{cases}

によく似ていることから、双対基底はもとの基底と双直交(biorthogonal)であるという。

よくわからないという人は、先ほど基底展開の章で

X=(e1e2en) X = \left( \begin{matrix} e _ 1 & e _ 2 & \cdots & e _ n \end{matrix} \right)

と行列で表記したことを思い出してほしい。一方で双対基底については双対基底ベクトルを行ごとに並べて、

X=X1=(e1e2en) X ^ \ast = X ^ {-1} = \left( \begin{matrix} e ^ 1 \\ e ^ 2 \\ \vdots \\ e ^ n \end{matrix} \right)

と表現することにすると、双直交の条件から

XX=I X ^ \ast X = I

を満たすので、X=X1X ^ \ast = X ^ {-1}が求まる。

表記 LaTeX 備考
eie _ i e _ i もとのベクトル空間VVの基底の基底ベクトル
eie ^ i e ^ i 双対ベクトル空間VV ^ \astの基底の基底ベクトル

反変成分表示と共変成分表示

先ほど基底展開の章で、ベクトルaVa \in V

a=Xw a = X w

と基底展開した。今後、この基底を基準として共変基底(covariant basis)と呼ぶことにする。XXが基底ならばXXは正則だから逆行列X1X ^ {-1}が存在する。上式にX1X ^ {-1}をかけると、

w=X1a w = X ^ {-1} a

となる。さらに双対基底についてX=X1X ^ \ast = X ^ {-1}が成り立つことを思い出せば、

w=Xa w = X ^ \ast a

である。双対基底のほうは反変基底(contravariant basis)と呼ばれ、wwはもとのベクトルと反変基底との内積で取り出された係数なので、もとのベクトルの反変成分表示という。

一方で、もとの空間のベクトルaVa \in Vに対応した双対ベクトルaVa ^ \ast \in V ^ \astは、双対基底によって以下のように展開できる。

a=vX a ^ \ast = v ^ \ast X ^ \ast

反変成分表示のときと同様に(X)1=X(X ^ \ast) ^ {-1} = Xを右からかければ

v=aX v ^ \ast = a ^ \ast X

となる。vv ^ \astはもとのベクトル(に対応する双対ベクトル)と共変基底との内積で取り出された係数なので、もとのベクトルの共変成分表示という。

テンソルの文脈では、反変成分表示は上付き添字、共変成分表示は下付き添字で書くというルールがある

基底展開の章で

a=Xw=(e1e2en)(w1w2wn) a = Xw = \left( \begin{matrix} e _ 1 & e _ 2 & \cdots & e _ n \end{matrix} \right) \left( \begin{matrix} w ^ 1 \\ w ^ 2 \\ \vdots \\ w ^ n \end{matrix} \right)

wwの添字を上付きにしていたのは、wwが反変成分表示だからである。同様にして共変成分で表示するときは

a=vX=(v1v2vn)(e1e2en) a ^ \ast = v ^ \ast X ^ \ast = \left( \begin{matrix} v _ 1 & v _ 2 & \cdots & v _ n \end{matrix} \right) \left( \begin{matrix} e ^ 1 \\ e ^ 2 \\ \vdots \\ e ^ n \end{matrix} \right)

となる。

ところで任意の基底ベクトルeie _ iも、もとのベクトル空間の元であるから、これについても反変成分表示と共変成分表示の2通りを考えることができる

a=Xwa = X wという行列表記を採用していて、wwが反変成分表示の場合、XXの基底ベクトルについても反変成分表示が採用されたことになる。共変基底ベクトルeie_iの第jj反変成分は

eij e _ i ^ j

と表記される(反変が上、共変が下)。このときaaの第jj行目に入る成分は

aj=i=1neijwi a ^ j = \sum _ {i = 1} ^ n e _ i ^ j w ^ i

で表現されていることがわかる。ここでアインシュタインの規約(Einstein convention)という略記法がよく導入される。上式のように「反変添字と共変添字で同じ文字が使われていたら和を取ることにするので\sumは書かなくてよい」というルールである。つまり、誤解が生じないならば

aj=eijwi a ^ j = e _ i ^ j w ^ i

と書いてよいことになっている。理由は次の不変性の章で説明する。

実のところ、eie _ iを共変成分表示してeije _ {ij}としてもよいのだが、その場合は行列表記できない(いま、共変成分表示は列ごとに並べることに約束で、共変基底ベクトルも列ごとに並べる約束だから、文字を並べる方向が被ってしまう)。もしそうしたいなら自分で何をやっているかしっかりと整理した上で、自分で定義した方法で2次元配列に詰め込めばよい。

表記(iiを基底ベクトルの番号とするとき) LaTeX 備考
eie _ i e _ i 共変基底ベクトル
eije _ i ^ j e _ i ^ j 共変基底ベクトルの第jj反変成分
eije _ {ij} e _ {ij} 共変基底ベクトルの第jj共変成分
eie ^ i e ^ i 反変基底ベクトル
ejie ^ i _ j e ^ i _ j 反変基底ベクトルの第jj共変成分
eije ^ {ij} e ^ {ij} 反変基底ベクトルの第jj反変成分
aia _ i a _ i ベクトルの共変成分表示
aia ^ i a ^ i ベクトルの反変成分表示

不変性

テンソル

テンソル積