行列
行列とは要素を縦横に格子状に並べたもの、というのが素朴な定義。要素、行列とは一般にはなにか、という話が発展して議論されることになる。
それまでは、要素は特に断りがなければ実数とする。一部、複素数とする場合もあるが、そのときは明記する。
行列の表記
括弧は丸括弧ではなく角括弧が使われることもある。上記のような行列をの 行列 と書く。
添字(そえじ)は基本的にから始める事が多いと思うが、このサイトではで始めることにする。
の行列は単なると表記する。これは、基本的にの行列とスカラーをしても、各種の性質が成立するからである。
とも書く。この表記は形式的な議論をする際に有用となる。また、をデフォルトの添字用の変数とし、などのように特別に明示することにする。つまり、とする。
今後は、,,などのアルファベットに対応するものを自然な定義として、特別の断りなしに用いる。
行列の例
の行列
の行列
行列全体の集合
余談:このサイトでは、行列全体の集合をと書くことにする。
根拠としては、集合論では自然数をというふうに集合論の言語に翻訳する技法があるのだが、これを利用していると考える。
まず、というのはなる写像すべてを表す集合として定義される。
これらの定義は冪集合の表記法のひとつであるにおけるをとみなした場合の整合性も取れている。
つまり、ということになり、添字からへの写像が行列ということだ。
なお、他にもと書くような流儀もある。
こうすると、の行列も考えられる。これはつまり、何も入っていない行列のみがある、ということだ。(何も写さない写像のみを含む集合)ということになる。
スカラー
各要素単体を、行列と区別してスカラーと呼ぶ。
今後、行列同士の演算や、行列とスカラーの演算が定義されることになる。
ベクトル
のことをサイズと呼ぶことにする。
また、の行列をサイズのベクトル個を用いて以下のようにも記述する。
ベクトルの例
行ベクトルの例
行と列の覚え方
添字の順番の覚え方
のやのことを添字と呼ぶ。
覚え方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]
]
余談: 一般化に備えて
前述の通り、要素などの代数的構造が何なのか、という話はのちに一般化される。基本的には実数 や複素数 として議論するが、すべて、体(たい)としての性質のみを用いることに着目するとよい。つまり、体 に一般化されることになる。
- 加算の単位元の存在:
- 加算の逆元の存在:
このようなは他の公理により一意に存在することがわかる。それを と表記する。 - 加算の交換律:
- 加算の結合律:
- 乗算の単位元の存在:
- 乗算の逆元の存在: について、
このようなは他の公理により一意に存在することがわかる。それをと表記する。 - 乗算の交換律:
- 乗算の結合律:
- 加算と乗算の分配律:
これからの議論が上記の性質しか使っていないと確認できることが重要。
例えば、実数特有の性質は使わないということだ。さらに具体的には、例えば以下のようなことが守られるということ。