Aを n 次の正方行列 A=(a1,⋯,an)とする。
行列式を以下の3つの性質をもつものとする定義に従えば、定義から以下の性質を持つ。
1つのベクトル(行や列)に対してc倍すると行列式がc倍になり、行列全体に対してc倍すると行列式がcn倍になることから、
多重線形性 という呼び方をする本もある(平岡和幸, & 堀玄. (2004). プログラミングのための線形代数. 株式会社 オーム社.)
∣ca1,a2,⋯,an∣∣a1+a1′,a2,⋯,an∣∣cA∣=c∣a1,a2,⋯,an∣=∣a1,a2,⋯,an∣+∣a1′,a2,⋯,an∣=cn∣A∣ 明示公式からの導出¶
ライプニッツの明示公式
∣A∣=σ∈Sn∑sgn(σ)a1σ(1)⋯aiσ(i)⋯anσ(n) に基づく説明
線形性¶
まず定数倍について
続いて和について
交代性¶
∣∣a11⋮aj1⋮ai1⋮an1⋯⋯⋯⋯⋯⋯⋯⋯a1n⋮ajn⋮ain⋮ann∣∣=−∣∣a11⋮ai1⋮aj1⋮an1⋯⋯⋯⋯⋯⋯⋯⋯a1n⋮ain⋮ajn⋮ann∣∣ という性質。
証明:
n 文字の各置換 σ に対して σ に右から互換 (ij) をかけた置換を τ とおく。すなわち、 τ=σ(ij)。
このとき、
τ(i)=σ(j),τ(j)=σ(i),τ(k)=σ(k)(k=i,j) となる。符号は
sgn(τ)=sgn(σ(ij))=sgn(σ)⋅sgn(ij)=−sgn(σ) となる。
左辺 =σ∈Sn∑sgn(σ)a1σ(1)⋯ajσ(i)⋯aiσ(j)⋯anσ(n)=τ∈Sn∑(−sgn(τ))a1τ(1)⋯ajτ(j)⋯aiτ(i)⋯anτ(n)=−τ∈Sn∑sgn(τ)a1τ(1)⋯aiτ(i)⋯ajτ(j)⋯anτ(n)= 右辺 規格化¶
三角行列の行列式は対角成分の積になるという定理(後述)から、∣I∣=1
行列式の積 = 積の行列式¶
B=(b1,⋯,bn)とおくと、線形性により、
∣AB∣=∣Ab1,⋯,Abn∣=c∣b1,⋯,bn∣ B=Iのとき、c=∣AI∣=∣A∣
よって ∣AB∣=c∣B∣=∣A∣∣B∣
転置行列の行列式¶
転置不変性のため、列に成り立つことは行でも成り立つ。
逆行列の行列式¶
∣A∣∣A−1∣=∣AA−1∣=∣I∣=1 ∣A∣∣A−1∣=1→∣A−1∣=∣A∣1 ゆえに ∣A−1∣=∣A∣−1 が成り立つ
ゼロが多い行列の行列式¶
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)=1∑sgn(σ)a11a2σ(2)⋯anσ(n)=a11σ∈Snσ(1)=1∑sgn(σ)a2σ(2)⋯anσ(n)=a11τ∈Sn−1∑sgn(τ)a2τ(2)⋯anτ(n) ここでSn−1は1を除くn−1個の文字{2,3,⋯,n}からなる置換の集合である。
三角行列の行列式¶
前出の定理を繰り返し適用する。すなわち
∣A∣=a11∣∣a220⋮0⋯⋱⋱⋯⋯⋱0a2n⋮ann∣∣=a11a22∣∣a330⋮0⋯⋱⋱⋯⋯⋱0a3n⋮⋮ann∣∣ これを続ければ
=a11a22⋯ann
行列を転置しても行列式の値は変わらない
∣AT∣=∣A∣ という性質を使い、下三角行列を転置して上三角行列にすることで
∣A∣=a11a22⋯ann となる
変形に関する性質¶
以下は行に関しても列に関しても成り立つ(転置不変性のため)
1 つの列を c 倍すると, 行列式は c 倍になる.
1 つの列の成分がすべて 0 である行列の行列式は 0 である.
1 つの列が 2 つの列べクトルの和である行列の行列式は, 他の列は同じでその列を各々の列べクトルとした行列の行列式の和になる.
2つの列を入れ換えると行列式は -1 倍になる.
行列の列の順序を置換 τ によって変更すると行列式は sgn(τ) 倍になる.
2 つの列が等しい行列の行列式は 0 である.
1つの列に任意の数をかけて他の列に加えても行列式の値は変わらない.
1つの列を c 倍すると, 行列式は c 倍になる¶
線形性によるもの。
左辺 =σ∈Sn∑sgn(σ)a1σ(1)⋯(caiσ(i))⋯anσ(n)=cσ∈Sn∑sgn(σ)a1σ(1)⋯aiσ(i)⋯anσ(n)= 右辺 2つの列が等しい行列の行列式は0¶
∣A∣=∣a1⋯ai⋯aj⋯an∣ とする。
ai=ajとして、これらをa∗で表すことにすると、2つの列を入れ替えると行列式の符号は変わるため、
∣a1⋯a∗⋯a∗⋯an∣=−∣a1⋯a∗⋯a∗⋯an∣=0 基本変形に対する不変性¶
1つの行(列)に任意の数をかけて他の行(列)に加えても行列式の値は変わらない
行列(a,b,c)について、線形性と交代性により
∣a+kc,b,c∣=∣a,b,c∣+k=0∣c,b,c∣=∣a,b,c∣ ∣c,b,c∣は同じ列が2つあるため、行列式は0になる
例:
1つの行(列)に任意の数をかけて他の行(列)に加えても行列式の値は変わらない
という定理により、ある行を定数倍して他の行に加える操作によって行列を変形して解くことができる。
∣∣147258369∣∣ を求めたいとき、これは3次なのでサラスの方法でもよいが、変形して解いてもよい。
第1行を4倍して第2行から引く
第1行を7倍して第3行から引く
という操作を行って
∣∣1002−3−63−6−12∣∣ として、第1列は(1,1)要素以外が0になったことを利用して
∣∣1002−3−63−6−12∣∣=1×∣∣−3−6−6−12∣∣=−3×(−12)−(−6)2=36−36=0 としてもよい。
2つの列を入れ換えると行列式は -1 倍になる¶
交代性より、あるいは明示公式から
ブロック行列の行列式¶
T=(ACBD) とする。
A が正則なとき, ∣T∣=∣A∣∣D−CA−1B∣
D が正則なとき, ∣T∣=∣D∣∣A−BD−1C∣
多重線形性¶
行列A=(a1,⋯,an)について
Undefined control sequence: \DeclareMathOperator at position 27: …oldsymbol{#1}}
\̲D̲e̲c̲l̲a̲r̲e̲M̲a̲t̲h̲O̲p̲e̲r̲a̲t̲o̲r̲{\det}{\text{de…
\def\b#1{\boldsymbol{#1}}
\DeclareMathOperator{\det}{\text{det}}
\begin{align}
\det(c \b{a}_1, \b{a}_2, \cdots, \b{a}_n) &= c \det(\b{a}_1, \b{a}_2, \cdots, \b{a}_n)\\
\det(\b{a}_1 + \b{a}_1', \b{a}_2, \cdots, \b{a}_n) &= \det(\b{a}_1, \b{a}_2, \cdots, \b{a}_n) + \det(\b{a}_1', \b{a}_2, \cdots, \b{a}_n)\\
\det(c\b{A}) = c^n \det(\b{A})
\end{align}のように任意の列への線形和が全体への線形和と等しいような法則性があること
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