行列式の性質#

線形性・交代性・規格化#

An 次の正方行列 A=(a1,,an)とする。

行列式を以下の3つの性質をもつものとする定義に従えば、定義から以下の性質を持つ。

線型性

|a1,,an| は、各列について線型である。

|a1,,cak+cak,,an|=c|a1,,ak,,an|+c|a1,,ak,,an|

1つのベクトル(行や列)に対してc倍すると行列式がc倍になり、行列全体に対してc倍すると行列式がcn倍になることから、 多重線形性 という呼び方をする本もある(平岡和幸, & 堀玄. (2004). プログラミングのための線形代数. 株式会社 オーム社.)

|ca1,a2,,an|=c|a1,a2,,an||a1+a1,a2,,an|=|a1,a2,,an|+|a1,a2,,an||cA|=cn|A|

交代性

i 列と第 j(ij) を入れかえ、他はそのままとすると、値が符号だけ変わる

|a1,,ai,,aj,,an|=|a1,,aji,,aij,,an|

規格化

単位行列 I=(e1,,en) に対しては

|I|=1

明示公式からの導出#

ライプニッツの明示公式

|A|=σSnsgn(σ)a1σ(1)aiσ(i)anσ(n)

に基づく説明

線形性#

まず定数倍について

1つの列(列)を c 倍すると、行列式は c 倍になる

|a11a1ncai1cainan1ann|=σSnsgn(σ)a1σ(1)(caiσ(i))anσ(n)=cσSnsgn(σ)a1σ(1)aiσ(i)anσ(n)=c|a11a1nai1ainan1ann|

続いて和について

1つの行が 2つの行べクトルの和である行列の行列式は、他の行は同じでその行を各々の列べクトルとした行列の行列式の和になる

|a11a1nbi1+ci1bin+cinan1ann|=|a11a1nbi1binan1ann|+|a11a1nci1cinan1ann|

証明:

 左辺 =σSnsgn(σ)a1σ(1)(biσ(i)+ciσ(i))anσ(n)=σSnsgn(σ){a1σ(1)biσ(i)anσ(n)+a1σ(1)ciσ(i)anσ(n)}=σSnsgn(σ)a1σ(1)biσ(i)anσ(n)+σSnsgn(σ)a1σ(1)ciσ(i)anσ(n)= 右辺 

交代性#

|a11a1naj1ajnai1ainan1ann|=|a11a1nai1ainaj1ajnan1ann|

という性質。

証明:

n 文字の各置換 σ に対して σ に右から互換 (ij) をかけた置換を τ とおく。すなわち、 τ=σ(ij)

このとき、

τ(i)=σ(j),τ(j)=σ(i),τ(k)=σ(k)(ki,j)

となる。符号は

sgn(τ)=sgn(σ(ij))=sgn(σ)sgn(ij)=sgn(σ)

となる。

 左辺 =σSnsgn(σ)a1σ(1)ajσ(i)aiσ(j)anσ(n)=τSn(sgn(τ))a1τ(1)ajτ(j)aiτ(i)anτ(n)=τSnsgn(τ)a1τ(1)aiτ(i)ajτ(j)anτ(n)= 右辺 

規格化#

三角行列の行列式は対角成分の積になるという定理(後述)から、|I|=1

行列式の積 = 積の行列式#

乗法性

n次正方行列A,Bに対して

|AB|=|A||B|

が成り立つ

証明

B=(b1,,bn)とおくと、線形性により、

|AB|=|Ab1,,Abn|=c|b1,,bn|

B=Iのとき、c=|AI|=|A|

よって |AB|=c|B|=|A||B|

転置行列の行列式#

転置不変性

n次の正方行列Aに対して、Aの行列式と転置行列ATの行列式は等しい、すなわち

|A|=|AT|

が成り立つ

転置不変性のため、列に成り立つことは行でも成り立つ。

逆行列の行列式#

逆行列の行列式

n次の正則行列Aについて

|A1|=|A|1

が成り立つ

証明
|A||A1|=|AA1|=|I|=1
|A||A1|=1|A1|=1|A|

ゆえに |A1|=|A|1 が成り立つ

ゼロが多い行列の行列式#

行列の(1,1)成分以外の第1列の成分がすべてゼロのとき、以下が成り立つ

|a11a12a1n0a22a2n0an2ann|=a11|a22a2nan2ann|
証明

A=(aij)とおく。行列の(1,1)成分以外の第1列の成分がすべてゼロのとき、a21=a31==an1=0になる。

σ(k)=1となるk>1があるため、それについてはakσ(k)=ak1=0となる。そのため

a1σ(1)a2σ(2)akσ(k)anσ(n)=0

となる。つまり、σ(1)>1となる項はすべて0になる。 そのため和はσ(1)=1となる置換のみにわたって計算すればよい。

|A|=σSnσ(1)=1sgn(σ)a11a2σ(2)anσ(n)=a11σSnσ(1)=1sgn(σ)a2σ(2)anσ(n)=a11τSn1sgn(τ)a2τ(2)anτ(n)

ここでSn1は1を除くn1個の文字{2,3,,n}からなる置換の集合である。

三角行列の行列式#

上三角行列の行列式

上三角行列Aの行列式|A|は、Aの対角成分の積に等しい。すなわち、以下が成り立つ

|A|=a11a22ann
証明

前出の定理を繰り返し適用する。すなわち

|A|=a11|a22a2n000ann|=a11a22|a33a3n000ann|

これを続ければ

=a11a22ann

下三角行列の行列式

下三角行列Aの行列式|A|は、Aの対角成分の積に等しい。すなわち、以下が成り立つ

|A|=a11a22ann
証明

行列を転置しても行列式の値は変わらない

|AT|=|A|

という性質を使い、下三角行列を転置して上三角行列にすることで

|A|=a11a22ann

となる

変形に関する性質#

以下は行に関しても列に関しても成り立つ(転置不変性のため)

  1. 1 つの列を c 倍すると, 行列式は c 倍になる.

  2. 1 つの列の成分がすべて 0 である行列の行列式は 0 である.

  3. 1 つの列が 2 つの列べクトルの和である行列の行列式は, 他の列は同じでその列を各々の列べクトルとした行列の行列式の和になる.

  4. 2つの列を入れ換えると行列式は -1 倍になる.

  5. 行列の列の順序を置換 τ によって変更すると行列式は sgn(τ) 倍になる.

  6. 2 つの列が等しい行列の行列式は 0 である.

  7. 1つの列に任意の数をかけて他の列に加えても行列式の値は変わらない.

1つの列を c 倍すると, 行列式は c 倍になる#

線形性によるもの。

行列A=(aij)の1つの行をc倍すると、行列式はc倍になる

|a11a1ncai1cainan1ann|=c|a11a1nai1ainan1ann|
証明
 左辺 =σSnsgn(σ)a1σ(1)(caiσ(i))anσ(n)=cσSnsgn(σ)a1σ(1)aiσ(i)anσ(n)= 右辺 

2つの列が等しい行列の行列式は0#

2つの列が等しい行列の行列式は0

n次正方行列Aのうち2つの列が等しければ、|A|=0

証明
|A|=|a1aiajan|

とする。

ai=ajとして、これらをaで表すことにすると、2つの列を入れ替えると行列式の符号は変わるため、

|a1aaan|=|a1aaan|=0

1次従属な行列の行列式は0

同様に、 n次正方行列Aのうち異なる2つの列が1次従属 (ai=kaj) ならば、 |a1,,an|=|A|=0

基本変形に対する不変性#

1つの行(列)に任意の数をかけて他の行(列)に加えても行列式の値は変わらない

行列(a,b,c)について、線形性と交代性により

|a+kc,b,c|=|a,b,c|+k|c,b,c|=0=|a,b,c|

|c,b,c|は同じ列が2つあるため、行列式は0になる

例:

1つの行(列)に任意の数をかけて他の行(列)に加えても行列式の値は変わらない

という定理により、ある行を定数倍して他の行に加える操作によって行列を変形して解くことができる。

|123456789|

を求めたいとき、これは3次なのでサラスの方法でもよいが、変形して解いてもよい。

  • 第1行を4倍して第2行から引く

  • 第1行を7倍して第3行から引く

という操作を行って

|1230360612|

として、第1列は(1,1)要素以外が0になったことを利用して

|1230360612|=1×|36612|=3×(12)(6)2=3636=0

としてもよい。

2つの列を入れ換えると行列式は -1 倍になる#

交代性より、あるいは明示公式から

ブロック行列の行列式#

T=(ABCD)

とする。

A が正則なとき, |T|=|A||DCA1B|

D が正則なとき, |T|=|D||ABD1C|

対角なブロック行列には以下が成立する

|ABBA|=|A+B||AB|

参考:行列式 |A B // B A| = |A-B||A+B| の証明 | ばたぱら

多重線形性#

行列A=(a1,,an)について

det(ca1,a2,,an)=cdet(a1,a2,,an)det(a1+a1,a2,,an)=det(a1,a2,,an)+det(a1,a2,,an)det(cA)=cndet(A)

のように任意の列への線形和が全体への線形和と等しいような法則性があること

import numpy as np
A = np.array([
    [1, 2],
    [1, 3]
])
print(f"det(A) = {np.linalg.det(A)}")

c = 5
print(f"det(cA) = {np.linalg.det(c * A):.1f}")
print(f"det(cA) - c^n det(A) = {np.linalg.det(c * A) - c**A.shape[0] * np.linalg.det(A):.1f}")
det(A) = 1.0
det(cA) = 25.0
det(cA) - c^n det(A) = -0.0
A[:, 0] *= c
A
array([[5, 2],
       [5, 3]])
np.linalg.det(A)
4.999999999999999

参考文献#

  • 川久保勝夫(2010)『線形代数学 (新装版)』