正方行列の行列式を縦長行列(行数が列数以上である行列)に対して拡張した概念であるCullis行列式について,少し勉強したので紹介します.
注:本記事は 矩形行列の行列式 の内容を参考に書いていますが,(自分用に)一部 矩形行列の行列式 とは違う記号を使ってしまっているので注意してください.
この記事 | 『矩形行列の行列式』 | 意味 |
| | |
| | 次単位行列 |
| | の第行と第列を取り除いた行列 |
| | からへの単射全体の集合 |
| | Cullis符号 |
注:矩形行列の行列式 に合わせて行列の成分は複素数として考えますが,一般の可換環の元を成分にしても本記事の内容はおそらく成り立つのではないかと思います.
記号と導入
- に対して,とおく(のときはとする).
- に対して,(複素)行列全体の集合をとする.
- 行列の行列式をと書く.
このとき,次のことが成り立つのだった.
第1列に関する余因子展開
に対して,次式が成り立つ.
ただしは,から第行と第列を取り除いて得られる行列とした.
の場合の余因子展開
を成り立たせるためには,と考えるのが妥当であることに注意しておく.
Cullis行列式
Cullis行列式の定義
正方行列の余因子展開を踏まえて,行列式を次のように一般化する.
に対して,Cullis行列式を次のように帰納的に定める.
ただしは,から第行と第列を取り除いて得られる行列とした.
もちろんの場合は,Cullis行列式は普通の意味での行列式に一致する.
この解答中では,行列のCullis行列式をで表す.
計算例
計算例
計算例
はを満たす正の整数とし,を並べた列ベクトルをとする.
このとき,に対して次式が成り立つことを示せ.
解答例
に関する帰納法で示す.のときは
のときは,帰納法の仮定より
Cullis行列式の多重線形性と交代性
Cullis行列式は,正方行列の行列式と同様に,列に関する多重線形性と交代性を満たす.
多重線形性 (cf. 矩形行列の行列式 p.63 定理1.4.11 (i), (ii)) に関する帰納法で示す.のときは
のとき,第列に関する線形性を示す.の場合は
の場合は,帰納法の仮定よりが多重線形性をもつことから
に関する帰納法で示す.のときは自明.
のとき,第列と第列を入れ替えることを考えると,であれば
であれば
ただし,途中で次の式変形を用いた:
任意の列に関する余因子展開 (cf. 矩形行列の行列式 p.146 系2.5.2 (i)) とに対して,
が成り立つことを示せ.ここで,はの第行と第列を取り除いて得られる行列とした.
解答例
の第列をとしてとおくと
これと交代性より所望の等式を得る.
多重線形性と交代性について
前節で,Cullis行列式が多重線形性と交代性を満たすことを示した.
ここで一旦,多重線形性と交代性から導かれる性質をいくつか見てみる.
- .
- .
- .
- ,が成り立つ.
- の場合,は次対称群であり,は恒等置換からなる元集合である.
- の場合,である.
を全順序集合とし,を長さの有限列とする.
このとき,の転倒数を
と定める.
を正の整数,を全順序集合とし,とを単射とする.
このとき,が成り立つことを示せ.
解答例
の単射性より,は次の4つの集合の非交和で表せる:
このとき,まず
である.さらに,は全単射だから
となる.したがってより所望の等式を得る.
一般に,多重線形性と交代性を満たす写像については次のことが成り立つ.
を正の整数とし,の標準基底をとする.
写像が多重線形性と交代性を満たすとき,任意の行列に対して
が成り立つ.
まず多重線形性から
である.この最後の和について,が単射でないときは交代性からとなるので,単射なに関する項だけが残り,さらに交代性から
となる.
を正の整数とし,の標準基底をとする.
与えられた写像に対して
で写像を定めたとき,この写像は多重線形性と交代性を満たすことを示せ.
解答例
多重線形性:とに対して
交代性:任意の互換に対して
よって,多重線形性と交代性を満たす写像は,各に対するの値だけで決まる.
(なおの場合(=縦長でない場合)はよりとなる.)
特にの場合,これはよく知られた行列式の特徴づけとなっている.
正方行列の行列式の特徴づけ (cf. 矩形行列の行列式 p.45 定理1.3.9) を正の整数とし,の標準基底をとする.
写像が多重線形性と交代性を満たすとき,任意の行列に対して
が成り立つ.
この命題から,次のことが成り立つ.
を正の整数とする.
写像が列に関する多重線形性と交代性を満たすとき,任意の行列と任意の行列に対して
が成り立つことを示せ.
解答例
各に対して,写像を
で定めると,このは多重線形性と交代性を満たす.よって任意のに対して
つまりが成り立つ.(ここで,はの標準基底とした.)
これをCullis行列式に適用すると,次の命題を得る.
Cullis行列式の右乗法性 (cf. 矩形行列の行列式 p.157 系2.6.2) とに対して,
は成り立たないことがある.実際,たとえば
と
は等しくない.
次正方行列の積み上げ (矩形行列の行列式 p.283 定理4.3.5 の特別な場合) 縦長行列と正の整数に対して,を縦に個重ねて得られる行列をと書くことにする.たとえば
である.が次正方行列のとき,が成り立つことを示せ.
解答例
すべての成分がである行列をと書くと,Cullis行列式の列に関する多重線形性・右乗法性と問題2より
Cullis行列式の別定義
Cullis行列式の明示公式と特徴づけ
Cullis行列式は,列に関する多重線形性と交代性に加えて,各に対するの値で特徴づけられるのだった.
そこで,を計算してみよう.
表記の都合上,の標準基底をと表す.
に注意して繰り返し余因子展開すると
となる.そこで,次の定義をする.
Cullis符号 (cf. 矩形行列の行列式 p.51 定義1.3.14, p.65 定義1.4.14) の有限部分集合に対して,のCullis符号を
で定義する.また,これを用いて写像を
で定義する.(特にのときはであり,通常の置換の符号と一致する.)
このとき,Cullis行列式は
と表せる.また,正方行列のときと同様に次の特徴づけができる.
Cullis行列式の特徴づけ
のとき,次の3条件を満たす写像はCullis行列式に一致する.
- は列に関して多重線形性をもつ.
- は列に関して交代性をもつ.
- 任意のに対して,である.
交代性から,3つ目の条件は「任意のに対して,である.」で置き換えてもよい.
2つの定義の同値性
前節の特徴づけをCullis行列式の定義にしてもよい.
Cullis行列式の別定義 (cf. 矩形行列の行列式 p.120 定義2.3.2, p.123 命題2.3.6) に対して,次の3条件を満たす一意的な写像をCullis行列式という.
- は列に関して多重線形性をもつ.
- は列に関して交代性をもつ.
- 任意のに対して,である.
つまり,各に対しては次式で表せる:
この節では余因子展開による定義を忘れて,上の別定義からの余因子展開を導出する.
計算のため,の成分の定義を明確にしておく.
行列とに対して,(から第行と第列を取り除いて得られる)行列を次式で定める:
に対して,写像を
で定めると,次のことが成り立つ.
- について,とは同値である.
- .
- 転倒数の差は,を満たすの個数に等しい.
- かつを満たすがもしあれば,よりであることに注意すれば
となり矛盾するので,ならばである.
逆にかつを満たすがもしあれば
となるから,上のすべてで等号成立しなければならない.するととよりを得て矛盾するので,ならばでもある. - がを満たすとき,(1)よりだから,の単射性よりとなる.よっても単射である.
- の定義と(3)より
が成り立つから
より
を得る.
補小行列式展開
余因子展開は,つの列を選んで,行列式の計算をより小さいサイズの行列式計算へ帰着する手法であった.
これを一般化した,つ以上の列を選ぶ展開式を紹介する.
補行列
,とし,との元を小さい順にそれぞれ,とする.
- から第行と第列を取り出して得られる行列をとする.
- から第行と第列をすべて取り除いて得られる行列をとする.(このを,の補行列という.)
に対して,集合を
で定め,写像を考える.このとき
が成り立つ.
集合と写像を
で定めると,がの逆写像となるからは全単射であり
のとき,とに対して
(のときは通常の余因子展開に一致する.)
に関する帰納法で示す.のときは既に示した.
のとき,の元を小さい順にとし,とおくと,帰納法の仮定と各に対する小行列式の(の第列だった列に関する)余因子展開より
の場合の一例
に対する補小行列式展開は
ただし,行列のCullis行列式をで表した.
Cullis行列式の実装例 (Java)
以下のソースコードを
paiza.IO
等にコピペすれば,いろいろな行列のCullis行列式を計算させることができると思います.
※筆者はプログラミング初心者です.ソースコードが見苦しかったり不備があったりするかもしれませんがご了承ください.
import java.util.*;
public class Main {
public static void main(String[] args) {
int[][] A = {
{9,1,6},
{3,7,2},
{4,5,8},
{2,6,3},
};
System.out.println(det(A));
}
public static int det(int[][] matrix){
int n = matrix.length;
if(n==0)return 1;
int k = matrix[0].length;
if(n<k)throw new RuntimeException();
if(k==0)return 1;
int result = 0;
for(int i0=0; i0<n; i0++){
int[][] submatrix = new int[n-1][k-1];
for(int i=0; i<n-1; i++){
submatrix[i] = Arrays.copyOfRange(matrix[i+((i<i0)?0:1)],1,k);
}
result += (i0%2==0?1:-1) * matrix[i0][0] * det(submatrix);
}
return result;
}
}
誤りや改善点がありましたら,ご指摘いただけると嬉しいです.
また,Cullis行列式に興味を持った方はぜひ『矩形行列の行列式』を読んでみてください.
ここまでお読みいただき,ありがとうございました.