【線形代数あるある】行列の掛け算とベクトル内積はどんな関係?
最近卒論関係で、論理行列と01列の掛け算に触れる。そこで思ったが、実ベクトルと実行列の掛け算は行列の行とベクトルの内積に掛ける。01列と論理行列はなかなかそうとはいかない。
01列からなる線形空間と論理行列
01列の集合は線形空間なり
長さが3の01列の集合は線形空間だったことは以下の手順で証明できる。まずはベクトルの足し算定義です。
つまり二つの01列の足し算はビットごとのxorとして定義される。例えば010と110の足し算は101で。値の異なるビットは計算後1になる。そうでないビットは0になる。そして整数01とベクトルの掛け算は
として定義する。ただし、ここの足し算は全てxorで線形空間の公理と一致する。ちなみに長さがN(N=1 2 ... )の01列の集合全て線形空間だったことはこの方法で証明できる。これから論理行列と01列の掛け算に入る。
論理行列と01列の掛け算
前と同じく、三次元01列の場合を説明してN次元に持っていく。との掛け算を次のように定義する。
変換される二進数はとみなせる。つまり基底の線形組み合わせだ。そして行列は一つの100を個の100、個の010と個の001に変換する。010と001に対しての変換もこうやって定められる。先のプロセスを見ると、線形変換はベクトルと数(スカラー)の掛け算あとベクトル同士の足し算しか使わない。そのため内積の定義がなくても、基底の線形組み合わせを別の線形組み合わせに書き換えれば行列の掛け算は成り立つ。
実線形空間の場合
結論を先に言うと、実行列とベクトルの積は偶々内積と定義が一致する。行列とn次元ベクトルの積の番目の成分はで与えられる。直交正規座標系の元でとの内積は
になる。よく見れば、直交正規基底を取った時の行列表示だけ内積と行列掛け算の定義は一致する。
おまけの複素線形空間
本当に困惑することは複素線形空間の場合。複素線形空間の内積は一つのベクトルをその共役ベクトルにしてから、掛け算する。そこで複素行列の掛け算も共役行列取るじゃないかと思うかもしれないが、先言った通り行列は線形組み合わせを表す。それ故に足したり掛けたり出来れば、別に内積と関係していないわけです。