数学記号記法一覧
普段私が用いているルールに則った記号・記法の一覧。私の専門の都合上、情報系の機械学習・数理最適化(線形代数、微積分、微分幾何など)に偏っており、プログラミング言語理論(論理学、圏論)や暗号・符号(群、環、体)の方面はほとんど書いていない。
本記事の内容のほとんどは一般的な表記に則っているため、他の本や論文を読むときに索引してもよい。
記号についてあまり詳しい解説はしない。
- 実際に表示される記号
- なんという名前の概念に対応しているか
- LaTeX コマンド
などを書いておくので、わからなければ各自調べてほしい。
次 → 数学記号記法一覧(解析学・テンソル解析)
https://zenn.dev/wsuzume/articles/d3e88a408dc235
Acknowledgement
@Hyrodium 様、@Naughie 様。
ご指摘、ご助言をありがとうございます。
定義
AをBにより定義するとき、以下のような表記が用いられる。どれを用いるかは好みの問題である。
表記 |
LaTeX |
備考 |
A = B |
A = B |
不親切で誤解を招くがよく使われる |
A \stackrel{\mathrm{def}}{=} B |
A \stackrel{\mathrm{def}}{=} B |
もっとも誤解がない |
A := B |
A := B |
工学部っぽい |
A \triangleq B |
A \triangleq B |
最近情報系の論文でよく見る |
A \equiv B |
A \equiv B |
理学部っぽい |
A \stackrel{\mathrm{def}}{\equiv} B |
A \stackrel{\mathrm{def}}{\equiv} B |
同値関係と誤解されうる |
A :\Leftrightarrow B |
A :\Leftrightarrow B |
圏論で見た |
A \stackrel{\mathrm{def}}{\Leftrightarrow} B |
A \stackrel{\mathrm{def}}{\Leftrightarrow} B |
命題の定義に用いられる |
但し書き
数式の前後に文章で断りを入れるのが面倒くさいときは、数式中に但し書きを入れることがある。
表記 |
LaTeX |
意味 |
\text{let} |
\text{let} |
(以下の数式において)この条件を課す |
\therefore |
\therefore |
(前の数式の結論として)ゆえに |
\because |
\because |
(前の数式が導出されたのは)なぜならば |
\text{where} |
\text{where} |
(前の数式を説明するために)ただし |
\text{if} |
\text{if} |
(前の数式は)以下の条件のもとで |
\text{otherwise} |
\text{otherwise} |
(\text{if}を受けて)それ以外 |
たとえば「xは0以上の実数とする。このxはx ^ 2 = 3を満たす。ゆえにx = \sqrt{3}である(なぜならばx \geq 0だから)」は
\begin{aligned}
\text{let} \,\, x \in \mathbb{R}, x \geq 0: \,\, x ^ 2 = 3 \\
\therefore x = \sqrt{3} \quad (\because x \geq 0)
\end{aligned}
と書ける。LaTeX だと綺麗に配置するのがしんどいが、手書きのときなどは適宜改行やインデントをしてよい。
他にも「y=\operatorname{ReLU}(x)である。ただし\operatorname{ReLU}(x)はx \geq 0のときxをそのまま出力し、その他では0を取る関数である」は
y = \operatorname{ReLU}(x) \quad \text{where} \,\, \operatorname{ReLU}(x) = \begin{cases}
x &\text{if} \,\, x \geq 0 \\
0 &\text{otherwise}
\end{cases}
と書ける。ちなみに上記の数式はそれぞれ
\begin{aligned}
\text{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 \text{where} \,\, \operatorname{ReLU}(x) = \begin{cases}
x &\text{if} \,\, x \geq 0 \\
0 &\text{otherwise}
\end{cases}
で出力している。
集合
複数のものを集めて扱うとき、数学では集合(set)という対象を用いる。
基本的な集合
集合 |
表記 |
LaTeX |
自然数の集合 |
\mathbb{N} |
\mathbb{N} |
整数の集合 |
\mathbb{Z} |
\mathbb{Z} |
実数の集合 |
\mathbb{R} |
\mathbb{R} |
複素数の集合 |
\mathbb{C} |
\mathbb{C} |
任意の体 |
\mathbb{K} |
\mathbb{K} |
範囲を限定するとき
「0より大きい」とか「0以上の」といった指定を整数の集合や実数の集合につけたいときは右下添字で簡易的に書かれることがある。+がついている場合は個数により0が含まれるかどうか変わるので注意する。また、「より大きい」は大なり(>)を用いるからよいが、「以上の」にはちょっと気取った大なりイコール(\geqslant)を用いるので一瞬ビックリする。
集合 |
表記 |
LaTeX |
0以上の整数 |
\mathbb{Z} _ {+} |
\mathbb{Z} _ {+} |
0より大きい整数 |
\mathbb{Z} _ {++} |
\mathbb{Z} _ {++} |
0以上の実数 |
\mathbb{R} _ {+} |
\mathbb{R} _ {+} |
0より大きい実数 |
\mathbb{R} _ {++} |
\mathbb{R} _ {++} |
集合 |
表記 |
LaTeX |
0より大きい整数 |
\mathbb{Z} _ {> 0} |
\mathbb{Z} _ {> 0} |
0以上の自然数 |
\mathbb{Z} _ {\geqslant 0} |
\mathbb{Z} _ {\geqslant 0} |
0より大きい実数 |
\mathbb{R} _ {> 0} |
\mathbb{R} _ {> 0} |
0以上の自然数 |
\mathbb{R} _ {\geqslant 0} |
\mathbb{R} _ {\geqslant 0} |
集合の演算
A, Bを任意の集合とする。
演算 |
表記 |
LaTeX |
和 |
A \cup B |
A \cup B |
積 |
A \cap B |
A \cap B |
差 |
A \setminus B |
A \setminus B |
複数の集合A _ 1, A _ 2, \ldots, A _ nで和や積を取るときは以下の表記が用いられる。
\begin{aligned}
\bigcup _ {i=1} ^ n A _ i &\stackrel{\mathrm{def}}{=} A _ 1 \cup A _ 2 \cup \cdots \cup A _ n \\
\bigcap _ {i=1} ^ n A _ i &\stackrel{\mathrm{def}}{=} A _ 1 \cap A _ 2 \cap \cdots \cap A _ n
\end{aligned}
LaTeX コマンドはそれぞれ\bigcup _ {i=1} ^ n
と\bigcap _ {i=1} ^ n
である。
集合の元と量化子
aが集合Aの元であるとき、aはAに属するといい、a \in Aと表記する。たとえばxが実数であることを主張するときはx \in \mathbb{R}と書く。
表記 |
LaTeX |
意味 |
a \in A |
a \in A |
aは集合Aの元である |
「任意の実数に対して」のように指定する記号は量化子と呼ばれる。
量化子 |
表記 |
LaTeX |
用法 |
意味 |
全称量化 |
\forall |
\forall |
\forall x \in X |
集合Xのすべての元xについて/任意のxについて |
存在量化 |
\exists |
\exists |
\exists x \in X |
集合Xのある元xについて/xが存在して |
唯一存在量化 |
\exists! |
\exists! |
\exists! x \in X |
集合Xのある唯一の元xについて/唯一のxが存在して |
包含関係
集合A, Bがまったく同じ元を持つとき集合AとBは等しいといいA=Bで表す。集合Aの元がすべて集合Bにも属しているとき、集合Aは集合Bに含まれるといいA \subset Bと表す。このときAはBの部分集合(subset)であるという。
AとBが等しいときでも「集合Aの元がすべて集合Bにも属している」という条件を満たすので「AはBの部分集合である」といえる。集合Aが集合Bに含まれるが等しくはないとき、AはBの真部分集合(true subset)であるという。
A \subset Bという表記の場合、それがA=Bを含意するかどうかについて明確な決まりはない。文脈から判断するしかないが、まともな書き手であれば必ず最初の方で断りを入れているはずなので探したほうがよい。より親切な書き手ならば真部分集合(\subsetneq)か部分集合(\subseteq)で書いているはずである。
表記 |
LaTeX |
意味 |
A = B |
A = B |
集合A,Bは等しい |
A \subset B |
A \subset B |
集合Aは集合Bの(真)部分集合である |
A \subsetneq B |
A \subsetneq B |
集合Aは集合Bの真部分集合である |
A \subseteq B |
A \subseteq B |
集合Aは集合Bの部分集合であるかまたは等しい |
外延表記と内包表記
集合を定義するときは主に外延的定義と内包的表記という方法がある。
外延表記
集合の要素をすべて書き下して集合を定義する記法を外延的定義(extensional definition)という。この表記の仕方自体のことは日本語では「外延表記」というが、英語では "Roster notation" という。
表記例 |
LaTeX |
A = \{ 1, 2, 3 \} |
A = \{ 1, 2, 3 \} |
A = \{ 1, 2, \ldots, n \} |
A = \{ 1, 2, \ldots, n \} |
内包表記
集合の要素が満たすべき条件を書き下して集合を定義する記法を内包的定義(intensional definition)という。この表記の仕方自体のことは日本語では「内包表記」というが、英語では "set-builder notation" という。
表記例 |
LaTeX |
A = \{ x \mid 1 \leq x \leq n \} |
A = \{ x \mid 1 \leq x \leq n \} |
集合の直積
複数の集合からひとつずつ元を選んで作られる組を元とする新たな集合を定義するとき、この集合をもとの集合のデカルト積(Cartesian product)または直積(direct product)という。集合A, Bの直積Cを内包表記で定義すれば
C = A \times B \stackrel{\mathrm{def}}{=} \{ (a,b) \mid a \in A, b \in B \}
である。
同じ集合Aのn個についての直積はA ^ nと簡略表記される。
A ^ n \stackrel{\mathrm{def}}{=} \underbrace{A \times A \times \cdots \times A}_{n個}
ちなみに上の式はA ^ n \stackrel{\mathrm{def}}{=} \underbrace{A \times A \times \cdots \times A}_{n個}
というコマンドで出力できる。
写像(対応、写像、関数)
高校で習うような関数は、大学の基礎的な集合論ではより一般的な写像や対応といった概念に拡張される。大学以降でもっともよく使うのはおそらく写像である。定義とか意味は本題ではないので各自調べること。
対応(correspondence)は集合Aの元から集合Bの元への対応関係のうちで、イメージ的には多対多のものを言う。状況が一般化されすぎていて扱いづらいのであまり用いられない。
写像(map)は集合Aの元から集合Bの元への対応関係のうちで、イメージ的には多対一のものを言う。状況が適度に一般化されていて扱いやすいのでよく用いられる。ちなみに一対一で対応している特殊ケースの写像は単射(injection)という。
関数(function)は写像のうちで終域(Bのほう)が数の集合(\mathbb{R}, \mathbb{Z}など)となるものを指す。つまり写像の特殊ケースである。
対応、写像、関数は大抵の場合、同じ表記が用いられるので写像で代表する。
集合Aから集合Bへの写像fを考えるとき、Aを始域、Bを終域といいf \colon A \to Bと書く。特にx \in Aがf(x) \in Bに写されることまで明記するときはf \colon A \to B \colon x \mapsto f(x)のように書く。
表記 |
LaTeX |
f \colon A \to B |
f \colon A \to B |
f \colon A \to B \colon x \mapsto f(x) |
f \colon A \to B \colon x \mapsto f(x) |
たとえばf(x) = x ^ 2も、より厳密に書きたいならば
\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 |
f |
f |
g |
g |
h |
h |
F |
F |
G |
G |
H |
H |
\gamma |
\gamma |
\Gamma |
\Gamma |
\phi |
\phi |
\varphi |
\varphi |
\psi |
\psi |
少し発展的な内容
集合族
集合を集めた集合を集合族(family of sets)または集合系(system of sets)という。たとえばA,B,Cがいずれも集合であるとき、集合
\mathfrak{P} = \{ A, B, C \}
は集合族である。LaTeX コマンドの筆記体(\mathcal
)、ドイツ文字(\mathfrak
)、花文字(\mathscr
)などの飾り文字で表されることがあり、大体初見では読めない。飾り文字は『数学記号記法一覧(文字装飾・ギリシャ文字・飾り文字)』にすべて列挙するが、よく出てくるのは以下。
文字 |
\mathcal |
\mathfrak |
\mathscr |
A |
\mathcal{A} |
\mathfrak{A} |
\mathscr{A} |
B |
\mathcal{B} |
\mathfrak{B} |
\mathscr{B} |
C |
\mathcal{C} |
\mathfrak{C} |
\mathscr{C} |
D |
\mathcal{D} |
\mathfrak{D} |
\mathscr{D} |
F |
\mathcal{F} |
\mathfrak{F} |
\mathscr{F} |
O |
\mathcal{O} |
\mathfrak{O} |
\mathscr{O} |
P |
\mathcal{P} |
\mathfrak{P} |
\mathscr{P} |
V |
\mathcal{V} |
\mathfrak{V} |
\mathscr{V} |
X |
\mathcal{X} |
\mathfrak{X} |
\mathscr{X} |
Y |
\mathcal{Y} |
\mathfrak{Y} |
\mathscr{Y} |
Z |
\mathcal{Z} |
\mathfrak{Z} |
\mathscr{Z} |
以下の位相空間、測度空間では集合族を扱うので覚えておくとよい。
位相空間
イメージ的には「近さ」とか「点から点への繋がり」といった構造が入った集合のこと。集合の和(無限個まで)と集合の積(有限個まで)について閉じた集合系である開集合系か、距離構造を直接入れた近傍系を用いて定義されることが多い。
「近さ」が定義されていないと「近づく」ことができないし、「点から点への繋がり」が定義されていないと「どういった近づき方ができるか」がわからないので、極論、微分が定義できない。同様にして派生する概念である「点と点がどれくらい離れてるか」も測れないので積分も定義できない。
つまり微分とか積分が定義されている空間には大体、位相空間の構造が入っている。
測度空間
イメージ的には「部分集合の大きさ」の構造が入った集合のこと。集合の補演算と集合の和(可算無限個まで)について閉じた集合系である\sigma-加法族を用いて定義される。\sigma-加法族は完全加法族ともいう。
積分するのに重要だった「点と点がどれくらい離れてるか」という概念は、一般化すれば「部分集合の大きさ」になるので、位相空間を介さなくても部分集合の大きさのほうを直接定義しにいけば積分自体は定義可能である。
高校で習う、位相空間に基づいた積分はリーマン積分(Riemann integral)、大学以降で習う、測度空間に基づいた積分はルベーグ積分(Lebesgue integral)という。
線形代数
情報系にとってはコンピュータで扱う関係上、有限次元の行列と数ベクトルが主な対象になる。数学できる人からは「それは線形代数ではなく算数だ」などと揶揄される。
ベクトル空間
ベクトル空間(vector space)とは簡単にはベクトルの加法とスカラー乗法の2種類の演算について閉じた空間である。ベクトル空間にはU, V, Wなどの文字がよく使われる。
ベクトル空間の元をベクトル(vector)という。ベクトルにはu,v,w,x,y,zなどの文字が使われることが多いが、どんな文字も割り当てられうる。
工学・物理学系の書籍ではベクトルは太字で{\bm v}や矢印をつけて\vec{v}とされることが多いが、数学書や論文ではスカラーと同じ書体でvのように書かれることが多いので注意。
ベクトルの表記 |
LaTeX |
受ける印象 |
v |
v |
数学寄り |
{\bm v} |
{\bm v} |
情報寄り |
\vec{v} |
\vec{v} |
物理寄り |
コンピュータ上では扱いやすさの関係上、体\mathbb{R}上の有限次元実数ベクトル空間がよく使われる。d次元の実数ベクトル空間の元はd個の実数の組で表せるため直積を用いて\mathbb{R} ^ dと表記される。
表記 |
LaTeX |
意味 |
v \in V |
v \in V |
vはベクトル空間Vの元である |
x \in \mathbb{R} ^ d |
x \in \mathbb{R} ^ d |
xはd次元実数ベクトル空間\mathbb{R} ^ dの元である |
ベクトルの表記
d次元実数ベクトル空間\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
ちなみにこれらはそれぞれ
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)という。つまり
(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 = (x _ 1, x _ 2, \ldots, x _ d) ^ \mathrm{T}と行ベクトルを転置して書くことも多い。
内積
ベクトルどうしの内積V \times V \to \mathbb{R}は中点(\cdot)か、角括弧(\left< \cdot, \cdot \right>)を用いて表す。実数ベクトルどうしであれば、u \in \mathbb{R} ^ nとv \in \mathbb{R} ^ nの内積は
\left< u, v \right> \stackrel{\mathrm{def}}{=} u ^ \mathrm{T} v = \sum _ {i=1} ^ n u _ i v _ i
で定義される。
また、関数f(x),g(x)は無限次元ベクトル空間\mathscr{X}の元とみなすことができて、関数どうしの内積を以下のように積分で定義することもある。
\left< f, g \right> \stackrel{\mathrm{def}}{=} \int f(x) g(x) dx
他にも、ヒルベルト空間\mathcal{H}や再生核ヒルベルト空間\mathcal{K}の内積というのも、機械学習のカーネル法を勉強していると出てくるが、どの空間での内積かを明記するときは下付き添字を用いて
\left< \cdot, \cdot \right> _ \mathcal{H}, \left< \cdot, \cdot \right> _ \mathcal{K}
のようにする。
u,v \in Vの内積 |
LaTeX |
備考 |
u \cdot v |
u \cdot v |
簡易的 |
\left< u , v \right> |
\left< u, v \right> |
一般的なので定義は都度要確認 |
u ^ \mathrm{T} v |
u ^ \mathrm{T} v |
有限次元実数ベクトル空間V = \mathbb{R} ^ n
|
\int u(x) v(x) dx |
\int u(x) v(x) dx |
無限次元実数ベクトル空間V = \mathscr{X}
|
\left< \cdot, \cdot \right> _ \mathcal{H} |
\left< \cdot, \cdot \right> _ \mathcal{H} |
ヒルベルト空間V = \mathcal{H}
|
\left< \cdot, \cdot \right> _ \mathcal{K} |
\left< \cdot, \cdot \right> _ \mathcal{K} |
再生核ヒルベルト空間V = \mathcal{K}
|
また、Markdown記法の関係上、表の中には書けなかったが、あとで紹介するブラ-ケット記法(bra-ket notation)の\left< u | v \right>、双対性を表す内積の\left[ u , v \right]というものもある。これらは少し変わった内積なのであとで説明する。
ノルム
ベクトルの「大きさ」や「長さ」に相当する概念である。
ベクトルx \in Vのノルム\| \cdot \| \colon V \to \mathbb{R}は、普通は自分自身との内積の平方根によって与えられるユークリッドノルム(Euclid norm)を用いる。
\| x \| \stackrel{\mathrm{def}}{=} \sqrt{\left< x, x \right>}
これは有限次元実数ベクトルx \in \mathbb{R} ^ nであれば、
\| x \| = \sqrt{\sum _ {i=1} ^ n x _ i ^ 2} = \sqrt{x _ 1 ^ 2 + x _ 2 ^ 2 + \cdots + x _ n ^ 2}
となる。有限次元実数ベクトル空間ではこの他にp-ノルムまたはL ^ pノルムと呼ばれるノルム\| \cdot \| _ p \colon V \to \mathbb{R}も定義される。L ^ pノルムはp \in \mathbb{R} _ {\geqslant 1}について定義されていて、
\| x \| _ p \stackrel{\mathrm{def}}{=} \left( \sum _ {i=1} ^ n |x _ i| ^ p \right) ^ {\frac{1}{p}}
である。ただし| \cdot |は絶対値記号である。これはp=2のときユークリッドノルムに一致している。p \to +\inftyの極限で定義されるL ^ \inftyノルムもあり、これは「xの要素のうちで絶対値が最大のもの」を表す。
\| x \| _ \infty = \operatorname{max} \{ |x _ 1|, |x _ 2|, \ldots, |x _ n| \}
ちなみにこの式は以下のコマンドで出力している。
\| x \| _ \infty = \operatorname{max} \{ |x _ 1|, |x _ 2|, \ldots, |x _ n| \}
また、本来pは1以上が想定されているが、スパースモデリングなどではp \to 0の極限で定義されるL ^ 0ノルムも用いられることがあり、これは「xの要素のうちで0でないものの個数」を表す。
他にも、ノルムを直接定義したバナッハ空間、内積からノルムを定義できるヒルベルト空間、再生核ヒルベルト空間、ヒルベルト空間に関数としての性質が追加された関数空間などでも定義され、どの空間でのノルムかを下付き添字で明記することもある(バナッハ空間のみ添字なしが多い)。
x \in Vのノルム |
LaTeX |
備考 |
| x | |
| x | |
この表記は一般のノルムを指すのでどんなノルムかは都度要確認 |
| x | |
| x | |
バナッハ空間(バナッハ空間はベクトル空間とは限らない) |
| x | _ \mathcal{H} |
| x | _ \mathcal{H} |
ヒルベルト空間V=\mathcal{H}
|
| x | _ \mathcal{K} |
| x | _ \mathcal{K} |
再生核ヒルベルト空間V=\mathcal{K}
|
x \in \mathbb{R} ^ nのノルム |
LaTeX |
備考 |
| x | |
| x | |
ユークリッドノルム |
| x | _ 2 |
| x | _ 2 |
ユークリッドノルム |
| x | _ p |
| x | _ p |
L ^ pノルム |
| x | _ \infty |
| x | _ \infty |
L ^ \inftyノルム(要素の絶対値が最大のもの) |
| x | _ 0 |
| x | _ 0 |
L ^ 0ノルム(0でない要素の数) |
行列(線形変換)
n次元実数ベクトル空間\mathbb{R} ^ nの元に対する線形変換\mathbb{R} ^ n \to \mathbb{R} ^ mは行列(matrix)で表すことができる。線形変換(linear transform)または線形写像(linear map)は線形性を満たす写像のことである。
n次元実数ベクトル空間\mathbb{R} ^ dの元xに対する線形変換Aは、一般にm \times 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}
のように書く。i行j列目で代表して
A = A _ {ij}, A = a _ {ij}
のように定義することもあり、単にA _ {ij}と言われたときは、それが行列なのか、行列のi行j番目の要素なのかに注意する必要がある。
特にm=1のときのf \colon \mathbb{R} ^ n \to \mathbb{R}は線形汎関数(linear functional)といい、
f = \left(
\begin{matrix}
a _ {1} & a _ {2} & \cdots & a _ {n}
\end{matrix}
\right) \in \mathbb{R} ^ {n}
のように行ベクトルで表される。
行列をm個の線形汎関数f _ {(i)} \colon \mathbb{R} ^ n \to \mathbb{R}を縦に並べたものとして考えるとき
A = \left(
\begin{matrix}
f _ {(1)} \\
f _ {(2)} \\
\vdots \\
f _ {(m)}
\end{matrix}
\right)
と解釈することがあり、同様にn個のm次元ベクトルx _ {(j)} \in \mathbb{R} ^ mを横に並べたものとして考えるとき
X = \left(
\begin{matrix}
x _ {(1)} & x _ {(2)} & \cdots & x _ {(n)}
\end{matrix}
\right)
と解釈することもある。
行列の転置
ベクトルに転置を定義したように行列にも転置が定義される。
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}
零行列
零行列O \in \mathbb{R} ^ {n \times n}は正方行列のうちですべての成分が0のものである。
単位行列
単位行列I _ n \in \mathbb{R} ^ {n \times n}は正方行列のうちで対角成分がすべて1、その他がすべて0の行列である。
I _ n = \left(
\begin{matrix}
1 & 0 & \cdots & 0 \\
0 & 1 & \cdots & 0 \\
\vdots & \vdots & \ddots & \vdots \\
0 & 0 & \cdots & 1 \\
\end{matrix}
\right)
単位行列のサイズが自明なときは単にIとも書かれ、Iの代わりに文字Eが用いられることもある。
また、単位行列の要素はクロネッカーのデルタ\delta _ {ij}で定義することができるので、単に\delta _ {ij}と書かれているものが単位行列を指していることもある。
I = \delta _ {ij} \quad \text{where} \,\, \delta _ {ij} = \begin{cases}
1 & \text{if} \,\, i = j \\
0 & \text{otherwise}
\end{cases}
単位行列 |
LaTeX |
I |
I |
I _ n |
I _ n |
E |
E |
E _ n |
E _ n |
\delta _ {ij} |
\delta _ {ij} |
逆行列
正方行列A \in \mathbb{R} ^ {n \times n}が正則ならば、逆行列が唯一つ存在し、それをA ^ {-1}と表記する。
逆行列は以下の性質を満たす。
A A ^ {-1} = A ^ {-1} A = I
逆行列 |
LaTeX |
A ^ {-1} |
A ^ {-1} |
行列式
正方行列に対しては行列式(determinant)\operatorname{det}(A)が定義できる。
\operatorname{det}(A)は、A \in \mathbb{R} ^ {n \times n}を、n次元ベクトルをn本、行ごとに並べたものとみなすとき、そのn本のベクトルがつくる図形(n=2ならば平行四辺形、n=3ならば平行六面体、それ以上は超立体)の符号付き体積に一致する。()は省略して\det Aと書くこともある。行列の「大きさ」を表現する概念のひとつであることから、集合の大きさやノルムのように
と表現されることもある(ノルムとは異なり二重線で書いているのは見たことがない)。
行列式 |
LaTeX |
\operatorname{det}(A) |
\operatorname{det}(A) |
\operatorname{det}A |
\operatorname{det}A |
※ マークダウンの表記上、|A|は表の中に表記できない。
行列の対角和(トレース)
正方行列に対しては対角成分の総和演算であるトレース(trace)が定義できる。
\operatorname{tr}(A) = \sum _ {i=1} ^ n a _ {ii}
行列の対角和 |
LaTeX |
\operatorname{tr}(A) |
\operatorname{tr}(A) |
行列の内積
行列はあくまで線形写像の表記の一種に過ぎず、A \in \mathbb{R} ^ {m \times n}はm \times n次元のベクトルとみなしてもよい(行列の和とスカラー倍は、ベクトル空間の公理としてのベクトルの和とスカラー倍にそのまま用いることができる)。
ベクトルだとみなしたら内積やノルムを定義したくなるのが道理であり、行列A, B \in \mathbb{R} ^ {m \times n}にも内積\left< \cdot, \cdot \right> \colon \mathbb{R} ^ {m \times n} \times \mathbb{R} ^ {m \times n} \to \mathbb{R}が定義される。行列の内積はベクトル同様、位置が対応する成分どうしをかけたあとで、すべて足し合わせる。
\left< A, B \right> = \operatorname{tr}(A ^ \mathrm{T} B) = \sum _ {i=1} ^ m \sum _ {j=1} ^ n a _ {ij} b _ {ij}
\operatorname{tr}(A ^ \mathrm{T} B)という書き方がよく好まれるが、正直わかりにくいと思う。Python で計算するときもnumpy.trace(A.T.dot(B))
とするよりnumpy.sum(A * B)
で計算したほうが速い。
他にもベクトルの内積と同様にA \cdot Bと書かれることもある。
行列の内積 |
LaTeX |
A \cdot B |
A \cdot B |
\left< A, B \right> |
\left< A, B \right> |
\operatorname{tr}(A ^ \mathrm{T} B) |
\operatorname{tr}(A ^ \mathrm{T} B) |
行列のノルム
行列の内積から誘導されるノルムはフロベニウスノルム(Frobenius norm)と呼ばれ\| \cdot \| _ F \colon \mathbb{R} ^ {m \times n} \to \mathbb{R}で表記される。
\| A \| _ F \stackrel{\mathrm{def}}{=} \sqrt{\sum _ {i=1} ^ m \sum _ {j=1} ^ n a _ {ij} ^ 2} = \sqrt{\left< A, A \right>}
Python で計算するときはnumpy.linalg.norm(A)
で計算できる。
行列Y \in \mathbb{R} ^ {m \times n}を、行列X \in \mathbb{R} ^ {m \times p}, W \in \mathbb{R} ^ \mathbb{n \times p}で
\hat{Y} = X W ^ \mathrm{T}
と近似したいとき、二乗誤差はフロベニウスノルムの二乗で書けるためよく見かける。たとえばXが固定の最小二乗法ならば、目的関数f(W)は
f(W) = \| Y - \hat{Y} \| _ F ^ 2 = \| Y - X W ^ \mathrm{T} \| _ F ^ 2
と書ける。
行列のノルム |
LaTeX |
備考 |
| A | |
| A | |
一般的なノルムを表す表記のため定義は都度要確認 |
| A | _ F |
| A | _ F |
フロベニウスノルム |
行列の随伴
複素数\mathbb{C}の共役(conjugate)の概念を複素数ベクトル\mathbb{C} ^ nや複素数行列\mathbb{C} ^ {m \times n}に拡張したのが随伴(adjoint)である。
実数ベクトルは転置すればそのベクトルに対応した線形汎関数を得ることができたのだが、複素数ベクトルに同様の概念を考えようとすると転置するだけでは不十分で、転置した上で各要素で複素共役を取らねばならない(リースの表現定理より)。この操作を随伴といいA ^ \astやA ^ \daggerで表す。
Aの随伴 |
LaTeX |
A ^ \ast |
A ^ \ast |
A ^ \dagger |
A ^ \dagger |
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, y \in \mathbb{C} ^ nの内積\mathbb{C} ^ n \times \mathbb{C} ^ n \to \mathbb{C}は随伴を用いて
\left< x, y \right> \stackrel{\mathrm{def}}{=} x ^ \dagger y = \sum _ {i=1} ^ n \bar{x} _ i y _ i
のように定義される。
ブラ-ケット記法による内積
量子力学や量子情報理論における波動関数は無限次元複素数ベクトルで表現できるので、ある粒子の状態を記述する波動関数はその粒子の状態ベクトルとも呼ばれる。
量子力学で扱う粒子は、大抵は1次元から3次元の空間座標xに時間軸tを加えた(x, t) \in \mathbb{R} ^ dのどこかの領域\Omega \in \mathbb{R} ^ dに存在するものと仮定する。粒子の状態を波動関数は文献によって\psi(x), \psi(t), \psi(x,t)などと表記揺れがあるが、
- ある時間における状態を固定して見たいので\psi(x)と書いている
- 量子コンピュータなど、粒子を観測する座標は固定して見ているので\psi(t)と書いている
- 粒子の状態が定常状態に達しており時間に依存しない\psi(x)と書いている
- 空間座標xと時刻tと切り離して考えたいので、あとで\psi _ t(x)などと書くつもりである
-
(x, t)といちいち書くのが面倒くさいので単にxと書いている
などが考えられるので文脈から把握する(物理学者は表記揺れに寛容なので察するしかない)。以下では(x, t)といちいち書くのが面倒くさいので単にxと書いている。
\mathbb{R} ^ d上に存在する粒子の波動関数が\psi(x)で表現されるとき、その粒子が領域\Omega \in \mathbb{R} ^ dに存在する確率は、
\int _ \Omega | \psi(x) | ^ 2 dx
で表される。この確率は\mathbb{R} ^ d全体で積分したときに1になるように規格化するので、
\int _ {\mathbb{R} ^ d} | \psi(x) | ^ 2 dx = 1
とする。
ここで| \cdot |の記号が少しややこしいのだが、複素関数\psi \in \mathcal{H}(\mathcal{H}は複素ヒルベルト空間)について、| \psi |と| \psi(x) |で意味が異なる。| \psi |は複素関数の関数ノルムを表しているため、
| \psi | ^ 2 = \left< \psi, \psi \right> = \int \overline{\psi(x)} \psi(x) dx
となる。一方で| \psi(x) |は複素数\psi(x) \in \mathbb{C}の絶対値を表しているため、
| \psi(x) | ^ 2 = \overline{\psi(x)} \psi(x)
である。| \psi |と| \psi(x) |の間には
| \psi | ^ 2 = \left< \psi, \psi \right> = \int \overline{\psi(x)} \psi(x) dx = \int | \psi(x) | ^ 2 dx
の関係が成り立つ。特に\mathbb{R} ^ d全体での積分について、上の関係式の第二項の表記を\left< \psi | \psi \right>とし、第四項との関係を抜き出して、粒子の存在確率の式を
\left< \psi | \psi \right> \stackrel{\mathrm{def}}{=} \int _ {\mathbb{R} ^ d} | \psi(x) | ^ 2 dx
と書くことにする。もちろん\left< \psi | \psi \right> = 1である。
こう書くと\left< \psi | \psi \right>を\left< \psi \right|と\left| \psi \right>に分けたくなる。なった人がいた。それで、
\begin{aligned}
\psi &= \left| \psi \right> \\
\psi ^ \dagger &= \left< \psi \right|
\end{aligned}
と書くことにして、\left< \psi \right|をブラベクトル(bra vector)、\left| \psi \right>をケットベクトル(ket vector)と呼ぶことになった(あるいはそれぞれ単にブラ、ケットともいう)。括弧は英語で「bracket」なのでそれを c(center) の部分で割ったというシャレだろうか。ブラベクトルが行ベクトルでケットベクトルが列ベクトルに対応している。随伴を取ると互いに入れ替わるので
\left| \psi \right> ^ \dagger = \left< \psi \right|, \quad \left< \psi \right| ^ \dagger = \left| \psi \right>
である。状態ベクトルはケットベクトルで表す。
量子力学では粒子の生成・消滅、座標・運動量、状態の時間発展など様々なものを演算子(operator)で表す。演算子は\hat{A}のように上にハット記号をつけて表記する。演算子はケットベクトルには左から、ブラベクトルには右から作用する。すなわち
\begin{aligned}
\hat{A} \left| \psi \right> &= \left| \phi \right> \\
\left< \psi \right| \hat{A} &= \left< \phi \right|
\end{aligned}
のように状態ベクトルの変化を表現する。
量子情報理論で特に重要なのは状態の時間発展を表す時間発展演算子(time evolution operator)である。シュレージンガー方程式から導かれる性質として、閉じた系の時間発展演算子はユニタリ演算子\hat{U}によって表される。すなわち、時刻0における状態ベクトル\left| \psi _ 0 \right>と時刻tにおける状態ベクトル\left| \psi _ t \right>の間には、
\hat{U} \left| \psi _ 0 \right> = \left| \psi _ t \right>
の関係が成り立つ。
汎用量子コンピュータは閉じた系であり、計算に上の式を利用している。量子コンピュータにおける状態ベクトルは量子ビットであり、量子計算(quantum calculation)とは量子ビットに所望の時間発展演算子に対応するユニタリ行列をかけることをいう。
量子ビット
古典情報理論で扱うビット(bit)は0か1かで情報を表したが、量子情報理論で登場する量子ビット(qubit: quantum bit の略)は\left| 0 \right>と\left| 1 \right>の重ね合わせ(線形和)で状態を表す。
\left| 0 \right>, \left| 1 \right> \in \mathbb{C} ^ 2は
\left| 0 \right> \stackrel{\mathrm{def}}{=} \left(
\begin{matrix}
1 \\
0
\end{matrix}
\right), \quad \left| 1 \right> \stackrel{\mathrm{def}}{=} \left(
\begin{matrix}
0 \\
1
\end{matrix}
\right)
と定義されており、複素数\alpha, \beta \in \mathbb{C} \, (|\alpha|^2 + |\beta|^2=1)を用いて
\left| \psi \right> = \alpha \left| 0 \right> + \beta \left| 1 \right> = \left(
\begin{matrix}
\alpha \\
\beta
\end{matrix}
\right)
と表現できる\left| \psi \right>が1量子ビットの表現できる情報の範囲である。先程、量子状態の観測確率は状態ベクトルの自身とのエルミート内積で表されると言った。量子ビットは理論的には観測に失敗することを考慮していない。つまり確率1で0か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
を要請するのである。
量子ビットは観測したときに結果が0か1に定まる。量子ビットが保持しているのは「どちらが何%の確率で観測されるか」という情報である。0, 1が観測される確率をそれぞれp _ 0, p _ 1とおくと、
\begin{aligned}
p _ 0 = |\alpha| ^ 2 \\
p _ 1 = |\beta| ^ 2
\end{aligned}
である。
\left| 0 \right> = 1 \cdot \left| 0 \right> + 0 \cdot \left| 1 \right>
であるから、\left| 0 \right>はp _ 0 =1, p _ 1 = 0で「必ず0が観測される」ことを意味し、これは古典ビットの0に対応する状態になる。同様にして\left| 1 \right>は古典ビットの1に対応する。
複数量子ビットは量子ビットどうしのテンソル積\otimes(\otimes
)で定義される。テンソルやテンソル積についてはテンソル代数の章で説明するが、
\left| z \right> = \left| x \right> \otimes \left| y \right> \quad \text{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)
とするとき、
z ^ {ij} \stackrel{\mathrm{def}}{=} x ^ i y ^ j
により定義される。添え字が上付きなのは反変成分表示していることを意味する(下付きだと共変成分表示の意味になる)。反変とか共変というのが何を意味しているかわからない人は、量子情報理論ではあまり気にしなくてよく、ただのベクトルの成分表示だと思ってよい。
zには添字が2つついているので、ij成分をi行j列目に行列表示すると、
\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)
となる。これが2量子ビットで表現可能な情報量である。いまは添字が2つだからいいが、3量子ビット以上になると添字が3つ以上になり行列では書けないので、量子情報理論の文脈では縦に並べ直すことが多い。
\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)
これは表記の仕方の問題なので本質的には意味は変わらない。さて、この規則に従って
\begin{aligned}
\left| 00 \right> \stackrel{\mathrm{def}}{=} \left| 0 \right> \otimes \left| 0 \right> = \left(
\begin{matrix}
1 \\
0 \\
0 \\
0
\end{matrix}
\right), & \quad \left| 01 \right> \stackrel{\mathrm{def}}{=} \left| 0 \right> \otimes \left| 1 \right> = \left(
\begin{matrix}
0 \\
1 \\
0 \\
0
\end{matrix}
\right) \\
\left| 10 \right> \stackrel{\mathrm{def}}{=} \left| 1 \right> \otimes \left| 0 \right> = \left(
\begin{matrix}
0 \\
0 \\
1 \\
0
\end{matrix}
\right), & \quad \left| 11 \right> \stackrel{\mathrm{def}}{=} \left| 1 \right> \otimes \left| 1 \right> = \left(
\begin{matrix}
0 \\
0 \\
0 \\
1
\end{matrix}
\right)
\end{aligned}
とおく。\left| 0 \right>, \left| 1 \right>のときの議論と同様にして、\left| 00 \right>, \left| 01 \right>, \left| 10 \right>, \left| 11 \right>はそれぞれ古典ビットの00, 01, 10, 11に対応する。
\left| z \right> = z ^ {00} \left| 00 \right> + z ^ {01} \left| 01 \right> + z ^ {10} \left| 10 \right> + z ^ {11} \left| 11 \right>
と基底展開できる。\left| 00 \right>の観測確率p _ {00}は
で表され、\left| 01 \right>, \left| 10 \right>, \left| 11 \right>の観測確率p _ {01}, p _ {10}, p _ {11}に関しても同様である。
3量子ビット以降についても以下同様で、一般にn量子ビットは2 ^ n通りのすべての可能性の観測確率を保持しているため、複数量子ビットに対する操作が可能になれば莫大な情報を内部的に保持した演算が可能になる。これが量子コンピュータが期待されている所以である。
次 → 数学記号記法一覧(解析学・テンソル解析)
https://zenn.dev/wsuzume/articles/d3e88a408dc235
Discussion
見た目の差異は少ないかもですが、
\mathrm{let}
などは\text{let}
と書く方が適切のようです。Is there a preference of when to use \text and \mathrm?
また、A \stackrel{\mathrm{def}}{\equiv} B が一番親切で誤解がないと書かれていますが、A \stackrel{\mathrm{def}}{=} B の方が誤解が少ないと思われます。\equiv は定義の意味以外にも合同や他の同値関係にも使われる記号なので、「等号の定義」ではなく「同値関係の定義」として解釈される可能性があると思います。
matrix
については\left(
と\right)
で囲むよりpmatrix
を使う方が短く書けて便利かと思います。ご指摘いただきありがとうございます!
該当ヵ所の
\mathrm
を\text
に修正、def についても修正いたしました。pmatrix
については記事に追記が必要となりますのでもう少しお時間いただいた後、修正を反映いたします。粒子が領域V にいる確率は V 上の積分です.関数同士の内積はふつう \mathbb{R} 全体で積分され,これは 1 となるように規格化されています.
ご指摘いただきありがとうございます!
私の理解が甘かったようで、申し訳ありません。ご指摘いただいた内容を理解するためにもう少しお時間いただきますが、調べた後、修正いたします。
0以上の自然数が
R ⩾0
になってます。