行列
行列とは要素を縦横に格子状に並べたもの、というのが素朴な定義。要素、行列とは一般にはなにか、という話が発展して議論されることになる。
それまでは、要素は特に断りがなければ実数とする。一部、複素数とする場合もあるが、そのときは明記する。
行列の表記
括弧は丸括弧ではなく角括弧が使われることもある。上記のような行列をの 行列 と書く。
は行数、は列数と呼ぶ。
添字(そえじ)は基本的にから始める事が多いと思うが、このサイトではで始めることにする。
の行列は単なると表記する。これは、基本的にの行列とスカラーをしても、各種の性質が成立するからである。
とも書く。この表記は形式的な議論をする際に有用となる。また、をデフォルトの添字用の変数とし、などのように特別に明示することにする。つまり、とする。
今後は、,,などのアルファベットに対応するものを自然な定義として、特別の断りなしに用いる。
行列の例
の行列
の行列
行列全体の集合
余談:このサイトでは、行列全体の集合をと書くことにする。
根拠としては、集合論では自然数をというふうに集合論の言語に翻訳する技法があるのだが、これを利用していると考える。
まず、というのはなる写像すべてを表す集合として定義される。
これらの定義は冪集合の表記法のひとつであるにおけるをとみなした場合の整合性も取れている。
つまり、ということになり、添字からへの写像が行列ということだ。
なお、他にもと書くような流儀もある。
こうすると、の行列も考えられる。これはつまり、何も入っていない行列のみがある、ということだ。(何も写さない写像のみを含む集合)ということになる。
スカラー
各要素単体(たい)を、行列と区別してスカラーと呼ぶ。
今後、行列同士の演算や、行列とスカラーの演算が定義されることになる。
ベクトル
ベクトルはスカラー値の有限列である。以下のように表記する。
のことをサイズと呼ぶことにする。
の行列を列ベクトル、の行列を行ベクトルと呼ぶ。
これ以降、ベクトルと列ベクトルとを同一視する。
また、の行列をサイズのベクトル個を用いて以下のようにも記述する。
ベクトルの例
行ベクトルの例
行と列の覚え方
行と列は以下のような暗記法がよく紹介される。
添字の順番の覚え方
のやのことを添字と呼ぶ。
覚え方1. 座標系の軸に対応させてYXと覚える
一般的な二次元のデカルト座標系の軸は、おそらく横方向に,縦方向にが取られることが多いと思われる。それを基準に、の順にインデックスを指定する、と覚える。
覚え方2. プログラムの二次元配列と対応させて覚える
後述の行列の定義にある、二次元の配列に対応させ、そのインデックス指定順と同一であると考える。
行列
プログラムにおけるプログラムにおいては、しばしば二次元の配列で表現される。
Python
a = [[0 for j in range(3)] for i in range(3)]
print(a)
[
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]
]
Rust
fn main() {
let a: Vec<Vec<i32>> = (0..3)
.into_iter()
.map(|_| (0..3).map(|_| 0).collect())
.collect();
println!("{:?}", a)
}
[
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]
]
余談: 一般化に備えて
前述の通り、要素などの代数的構造が何なのか、という話はのちに一般化される。基本的には実数 や複素数 として議論するが、すべて、体としての性質のみを用いることに着目するとよい。つまり、体 に一般化されることになる。
以下に、体の公理を予備知識の必要ない簡単な形式で書く。
集合と二項演算 (加算),(乗算)の組であって、
- 加算の単位元の存在:
- 加算の逆元の存在:
このようなは他の公理により一意に存在することがわかる。それを と表記する。 - 加算の交換律:
- 加算の結合律:
- 乗算の単位元の存在:
- 乗算の逆元の存在: について、
このようなは他の公理により一意に存在することがわかる。それをと表記する。 - 乗算の交換律:
- 乗算の結合律:
- 加算と乗算の分配律:
なお、乗算の演算は省略することがある。
これからの議論が上記の性質しか使っていないと確認できることが重要。
例えば、実数特有の性質は使わないということだ。さらに具体的には、例えば以下のようなことが守られるということ。
- 有理数と無理数で場合分けするといったことをしない。
- などの以外の特殊な値を定義に使用しない。
行列はさらにその後、線形空間を対象として一般化される。そして、定義のいくつかの部分は無限へと拡張される。