- 行列式 detA は、n 個の列ベクトルに数を対応させる写像のうち、各列について線形(多重線形性)・同じ列が 2 本あれば 0(交代性)・単位行列で 1(正規化)という 3 条件を満たすものとしてただ一つに定まります。ライプニッツの公式も余因子展開も、この特徴づけから導かれる表示式にすぎません。
- det(AB)=detA⋅detB が成り立ちます。これは「変換を合成すると体積の拡大率は掛け算になる」という幾何的事実の代数版です。
- detA=0 であること、A が正則であること、A の列ベクトルが一次独立であること、Ax=0 が自明な解しか持たないことは、すべて同値です。行列式は「空間がつぶれているかどうか」を 1 個の数で判定する道具です。
- ∣detA∣ は単位立方体が A によって写った平行体の体積であり、符号は変換が向きを保つか裏返すかを表します。
- 実際の数値計算にライプニッツの公式(n! 項の和)は使いません。行基本変形で三角化すれば乗除算 O(n3) 回で済みます。
2 元 1 次連立方程式
{ax+by=pcx+dy=q
を素朴に解いてみます。第 1 式を d 倍、第 2 式を b 倍して差を取ると (ad−bc)x=pd−bq、第 1 式を c 倍、第 2 式を a 倍して差を取ると (ad−bc)y=aq−pc が得られます。したがって ad−bc=0 でありさえすれば
x=ad−bcpd−bq,y=ad−bcaq−pc
と解が確定します。逆に ad−bc=0 のときは、左辺だけを見ても解が一意に決まらない状況(解なし、または無数の解)が起こります。係数だけから作った 1 個の数 ad−bc が、右辺 p,q に依らずに「解けるかどうか」を判定しているわけです。
3 元 1 次の場合に同じ計算を押し進めると、判定を担う数は
a11a22a33+a12a23a31+a13a21a32−a13a22a31−a11a23a32−a12a21a33
という 6 項の和になります。ここで素朴な疑問が二つ生まれます。第一に、一般の n 元 1 次連立方程式に対して、この「判定する数」はどう書けるのか。第二に、なぜそんな数が存在するのか、つまり n2 個の係数のあいだの複雑な関係が、どうして 1 個のスカラーに凝縮できるのか。
第一の問いには 17 世紀末から答えが出ています。関孝和は 1683 年の『解伏題之法』で消去法の途中に現れる式として、ライプニッツは 1693 年のロピタル宛書簡で同様の式を扱いました。クラメルは 1750 年の著書で n 元連立一次方程式の解を分数の形で書き下しています。行列式の一般論として整理され、determinant という呼び名が今日の意味で定着したのは 19 世紀初頭のコーシーの仕事によります。
この記事では第一の問いに二通りの答えを与えます。**置換の符号を使った明示式(ライプニッツの公式)**と、次数を 1 つ下げる帰納的な式(余因子展開)です。この二つは見た目がまったく違いますが、どちらも同じ関数を表します。そして第二の問いへの答えが、その「同じ関数」の正体、すなわち多重線形性と交代性です。行列式は、この二つの性質と正規化条件だけで一意に決まってしまう関数であり、二つの公式はその関数の別々の計算手順にすぎません。
さらに最終節で、行列式が本質的には符号付き体積であることを見ます。連立方程式が一意に解けないのは、係数行列の定める線形変換が空間をつぶして次元を落としているからであり、「つぶれている」ことは「体積が 0」ということです。ad−bc が判定に使えた理由は、それが平行四辺形の面積だったから、というのが最終的な答えになります。
なお、行列の積・逆行列・連立一次方程式の掃き出し法については 行列と連立一次方程式 を前提とします(積の定義は 定義 4.1[行列と連立一次方程式]、掃き出し法は 定理 7.4[行列と連立一次方程式] を見てください)。
この記事を通じて K は R または C を表します(以下の議論は一般の可換体でもそのまま通用します)。n 次正方行列全体を Mn(K) と書き、A=(aij)∈Mn(K) の第 j 列を aj∈Kn として
A=(a1 a2 ⋯ an)
と列に区切って書きます。e1,…,en は Kn の標準基底、In は単位行列、O は零行列です。
行列式の定義には、n 個の行番号を並べ替える操作を数え上げる道具が必要です。
定義 2.1(置換とその符号)
{1,2,…,n} から自分自身への全単射を n 次の置換といい、置換全体の集合を Sn と書きます。Sn は写像の合成 (στ)(i)=σ(τ(i)) について群をなし、Sn の元の個数は n! です。
相異なる p,q について p↦q、q↦p とし、他はすべて動かさない置換を互換といい (p q) と書きます。
σ∈Sn に対し、順序が食い違う番号の組の個数
inv(σ)=#{(i,j)∣1≤i<j≤n, σ(i)>σ(j)}を σ の転倒数といい、sgn(σ)=(−1)inv(σ) を σ の符号といいます。sgn(σ)=1 のとき σ を偶置換、−1 のとき奇置換といいます。
たとえば σ(1)=3, σ(2)=1, σ(3)=2 という置換では、組 (1,2) は 3>1 で転倒、(1,3) は 3>2 で転倒、(2,3) は 1<2 で転倒しません。よって inv(σ)=2、sgn(σ)=+1 です。
符号の扱いやすさは、次の補題に尽きます。証明には差積
Δ(x1,…,xn)=1≤i<j≤n∏(xj−xi)
という多項式を使います。これは変数の入れ替えに対して符号だけを変える、という性質を持つ最も単純な多項式です。
補題 2.2(符号の基本性質)
n≥2 とし、σ,τ∈Sn とします。このとき次が成り立ちます。
- 多項式の恒等式として Δ(xσ(1),…,xσ(n))=sgn(σ)Δ(x1,…,xn)。
- sgn(στ)=sgn(σ)sgn(τ)。また sgn(id)=1、sgn(σ−1)=sgn(σ)。
- 任意の互換 (p q) に対し sgn((p q))=−1。
- 任意の σ∈Sn は有限個の互換の積として書け、σ が k 個の互換の積で書けたならば sgn(σ)=(−1)k である。とくに互換の個数の偶奇は書き方によらない。
証明(補題 2.2)
(1) Δ(xσ(1),…,xσ(n))=∏i<j(xσ(j)−xσ(i)) です。σ は全単射なので、{i,j} を {σ(i),σ(j)} に対応させる写像は 2 元部分集合全体の上への 1 対 1 対応です。したがって右辺の各因子は、符号を除けば Δ(x1,…,xn) の因子とちょうど 1 対 1 に対応します。因子 xσ(j)−xσ(i)(ここで i<j)は、σ(i)<σ(j) ならそのまま Δ の因子であり、σ(i)>σ(j) なら −(xσ(i)−xσ(j)) と符号が 1 つ出ます。後者が起きる組の個数はちょうど inv(σ) ですから、全体として (−1)inv(σ)Δ=sgn(σ)Δ となります。
(2) (1) は多項式の恒等式なので、変数に何を代入しても成り立ちます。yi=xσ(i) とおくと yτ(i)=xσ(τ(i))=x(στ)(i) ですから、
sgn(στ)Δ(x)=Δ(x(στ)(1),…,x(στ)(n))=Δ(yτ(1),…,yτ(n))=sgn(τ)Δ(y1,…,yn)=sgn(τ)Δ(xσ(1),…,xσ(n))=sgn(τ)sgn(σ)Δ(x)が得られます。Δ は零多項式ではないので両辺の係数を比べて sgn(στ)=sgn(σ)sgn(τ) です。id には転倒がないので sgn(id)=1、これと σσ−1=id から sgn(σ)sgn(σ−1)=1、符号は ±1 しか取らないので sgn(σ−1)=sgn(σ) です。
(3) τ=(p q)、p<q として転倒数を直接数えます。転倒する組は次の 3 種類しかありません。組 (p,q) 自身は τ(p)=q>p=τ(q) で転倒します(1 個)。p<k<q なる k に対する組 (p,k) は τ(p)=q>k=τ(k) で転倒します(q−p−1 個)。同じ k に対する組 (k,q) は τ(k)=k>p=τ(q) で転倒します(q−p−1 個)。これ以外の組は両方の番号が固定されるか、片方だけが p または q で k が区間の外にある場合であり、大小関係は変わりません。よって inv(τ)=2(q−p−1)+1 は奇数で、sgn(τ)=−1 です。
(4) 互換の積で書けることを σ が動かす番号の個数に関する帰納法で示します。σ=id なら空積(互換 0 個の積)と見なします。σ=id なら σ(m)=m なる m を取り、σ′=(m σ(m))σ とおくと σ′(m)=m となり、さらに σ が固定していた番号は σ′ でも固定されます。よって σ′ が動かす番号は σ より真に少なく、帰納法の仮定から σ′ は互換の積で書けます。(m σ(m)) は自分自身が逆元なので σ=(m σ(m))σ′ もそうです。後半は (2) と (3) から直ちに従います。
∎
3 次の場合の 6 項の和をよく見ると、各項は「各列からちょうど 1 個ずつ、しかも互いに異なる行から」成分を選んだ積になっています。列 1,2,…,n に対して選ぶ行番号を σ(1),σ(2),…,σ(n) と書けば、σ は置換にほかなりません。符号は置換の符号として付きます。これを一般の n でそのまま定義に採用します。
定義 3.1(行列式(ライプニッツの公式))
A=(aij)∈Mn(K) に対し、
detA=σ∈Sn∑sgn(σ)aσ(1)1aσ(2)2⋯aσ(n)n=σ∈Sn∑sgn(σ)j=1∏naσ(j)jを A の行列式といいます。detA、∣A∣ のほか、成分を縦棒で囲んで書くこともあります。
和は n! 項からなり、そのうち半分が正、半分が負の符号を持ちます。定義を小さい n で書き下してみます。
-
n=1:S1={id} なので det(a11)=a11。
-
n=2:S2={id,(1 2)} で符号はそれぞれ +1,−1 ですから
det(a11a21a12a22)=a11a22−a21a12.
§1 で解の判定に現れた ad−bc が再現されました。
-
n=3:S3 の 6 元のうち、id と 2 つの 3 次巡回置換が偶置換(符号 +1)、3 つの互換が奇置換(符号 −1)です。したがって
detA=a11a22a33+a13a21a32+a12a23a31−a13a22a31−a11a23a32−a12a21a33
となり、これも §1 の式と一致します。3×3 に限っては「右下がりの 3 本の積を足し、右上がりの 3 本の積を引く」というサラスの規則として覚えられますが、この覚え方は 4 次以上では成り立ちません(4 次の項数は 4!=24 であり、たすき掛けで得られる 8 項ではまったく足りません)。
例 3.2(3 次行列式を定義どおり計算する)
A=205−14231−2の行列式を、上の 6 項の式にそのまま代入して求めます。
a11a22a33a13a21a32a12a23a31a13a22a31a11a23a32a12a21a33=2⋅4⋅(−2)=−16,=3⋅0⋅2=0,=(−1)⋅1⋅5=−5,=3⋅4⋅5=60,=2⋅1⋅2=4,=(−1)⋅0⋅(−2)=0.前半 3 つを足し、後半 3 つを引いて
detA=(−16+0−5)−(60+4+0)=−21−64=−85を得ます。この値は後で 定理 5.2 による展開でも確かめられます。
ライプニッツの公式は計算の道具としては非効率ですが(§9 で見ます)、理論的には非常に見通しがよいという長所があります。定義式の対称性を眺めるだけで得られる性質を二つ挙げておきます。
命題 3.3(転置不変性と三角行列)
A∈Mn(K) について次が成り立ちます。
- detAT=detA。すなわち行列式は転置で不変であり、行について成り立つ性質と列について成り立つ性質は常に対になります。
- A が上三角行列(i>j ならば aij=0)または下三角行列(i<j ならば aij=0)ならば detA=a11a22⋯ann である。とくに detIn=1、対角行列の行列式は対角成分の積である。
証明(命題 3.3)
(1) B=AT とおくと bij=aji です。定義より
detAT=σ∈Sn∑sgn(σ)j=1∏nbσ(j)j=σ∈Sn∑sgn(σ)j=1∏najσ(j).各項の積は有限個の因子の積なので順序を入れ替えられます。i=σ(j) すなわち j=σ−1(i) と番号を付け替えると ∏jajσ(j)=∏iaσ−1(i)i です。さらに 補題 2.2 (2) より sgn(σ)=sgn(σ−1) であり、σ が Sn 全体を動くとき τ=σ−1 も Sn 全体を動きます。したがって
detAT=τ∈Sn∑sgn(τ)i=1∏naτ(i)i=detA.(2) A を上三角とします。項 ∏jaσ(j)j が 0 でないためには、すべての j について aσ(j)j=0、すなわち σ(j)≤j が必要です。j=1 では σ(1)≤1 より σ(1)=1。j=2 では σ(2)≤2 かつ σ(2)=σ(1)=1 より σ(2)=2。以下同様に j について順に進めれば(σ(1),…,σ(j−1) が 1,…,j−1 を使い切っているので σ(j)≤j から σ(j)=j)、σ=id に限ることがわかります。残るのは sgn(id)∏jajj の 1 項だけです。下三角の場合は転置が上三角なので (1) に帰着します。In は対角成分がすべて 1 の対角行列なので detIn=1 です。
∎
ライプニッツの公式は定義としては明快ですが、これを毎回展開して性質を証明するのは苦しい作業です。実は行列式の性質のほとんどは、公式の細部ではなく、次の二つの性質だけから出てきます。
定義 4.1(多重線形性と交代性)
写像 D:(Kn)n→K、すなわち n 個のベクトル v1,…,vn∈Kn にスカラーを対応させる写像を考えます。
- D が多重線形であるとは、各 k について、他の変数を固定したとき vk の関数として線形であること、つまり任意の u,w∈Kn と c∈K に対して
D(…,u+w,…)D(…,cu,…)=D(…,u,…)+D(…,w,…),=cD(…,u,…)
が成り立つことをいいます(… の位置の変数は共通で固定されています)。
- D が交代的であるとは、i=j かつ vi=vj ならば D(v1,…,vn)=0 となることをいいます。
A=(a1 ⋯ an) に対して detA=det(a1,…,an) と見なし、det を列ベクトルの関数として扱います。
定理 4.2(行列式の特徴づけ)
D:(Kn)n→K が多重線形かつ交代的であれば、任意の v1,…,vn∈Kn に対して
D(v1,…,vn)=D(e1,…,en)⋅detV,V=(v1 ⋯ vn)が成り立ちます。とくに、多重線形・交代的で D(e1,…,en)=1 を満たす写像は det ただ一つです。
証明(定理 4.2)
第 1 段(交代性から反対称性へ) D は多重線形かつ交代的とします。i<j を固定し、第 i 変数と第 j 変数に同じベクトル u+w を入れると交代性から
0=D(…,u+w,…,u+w,…)です。左辺を第 i 変数、続いて第 j 変数について多重線形性で展開すると 4 項になり、そのうち D(…,u,…,u,…) と D(…,w,…,w,…) は交代性からともに 0 です。残るのは
D(…,u,…,w,…)+D(…,w,…,u,…)=0,すなわち二つの変数を入れ替えると符号が変わる(反対称性)ことです。
次に、任意の σ∈Sn に対し
D(vσ(1),…,vσ(n))=sgn(σ)D(v1,…,vn)を示します。補題 2.2 (4) により σ=τ1τ2⋯τk(τm は互換)と書け、sgn(σ)=(−1)k です。k に関する帰納法を使います。k=0 は自明です。σ=ρτ(τ は互換、ρ は k−1 個の互換の積)と書いたとき、wi=vρ(i) とおくと vσ(j)=vρ(τ(j))=wτ(j) ですから、D(vσ(1),…,vσ(n))=D(wτ(1),…,wτ(n)) となります。τ は 2 つの変数の入れ替えなので、上で示した反対称性からこれは −D(w1,…,wn)=−D(vρ(1),…,vρ(n)) に等しく、帰納法の仮定を使えば −(−1)k−1D(v1,…,vn)=(−1)kD(v1,…,vn) です。
第 2 段(標準基底への還元) vj=∑i=1nvijei と成分表示し、第 1 変数から順に多重線形性で展開します。
D(v1,…,vn)=i1=1∑ni2=1∑n⋯in=1∑nvi11vi22⋯vinnD(ei1,ei2,…,ein).添字の組 (i1,…,in) のうち、同じ値が 2 回以上現れるものは交代性から D(ei1,…,ein)=0 となり消えます。残るのは i1,…,in がすべて相異なる組、すなわち j↦ij が置換 σ になる場合だけです。第 1 段より D(eσ(1),…,eσ(n))=sgn(σ)D(e1,…,en) ですから、
D(v1,…,vn)=(σ∈Sn∑sgn(σ)j=1∏nvσ(j)j)D(e1,…,en)=detV⋅D(e1,…,en).これが主張の等式です。
第 3 段(det が実際に条件を満たすこと) 一意性だけでは中身が空かもしれないので、det 自身が多重線形・交代的で detIn=1 であることを確かめます。
多重線形性:定義式の各項 sgn(σ)∏jaσ(j)j は、第 k 列からちょうど 1 個の成分 aσ(k)k を含み、他の因子は第 k 列に依存しません。よって各項は第 k 列の成分について 1 次の同次式であり、その和である det も第 k 列について線形です。
交代性:第 p 列と第 q 列(p=q)が等しい、すなわちすべての i で aip=aiq とします。互換 τ=(p q) を使って σ↦στ という対応を考えると、これは Sn 上の不動点を持たない対合(2 回施すと元に戻る全単射)なので、Sn は n!/2 個の組 {σ,στ} に分割されます。各組の 2 項を比べると、j=p,q では aστ(j)j=aσ(j)j であり、j=p では aστ(p)p=aσ(q)p=aσ(q)q、j=q では aστ(q)q=aσ(p)q=aσ(p)p(2 つ目の等号でそれぞれ列が等しいことを使いました)。したがって積の値は完全に一致し、符号だけが 補題 2.2 (2)(3) より逆になります。各組の寄与が打ち消し合うので detA=0 です。
正規化:detIn=1 は 命題 3.3 (2) です。
∎
この定理の使い道は 2 通りあります。ひとつは「行列式とはこういう性質の関数だ」と性質から出発できるようになること。もうひとつは、多重線形・交代的な写像を作ったら、それは自動的に det の定数倍だと同定できることです。後者は §6 の積の定理で威力を発揮します。まず、日々の計算に直結する系を書いておきます。
命題 4.3(基本変形と行列式)
A=(a1 ⋯ an)∈Mn(K) とします。
- 2 つの列を入れ替えると行列式は −1 倍になる。
- ある 1 つの列を c∈K 倍すると行列式は c 倍になる。とくに det(cA)=cndetA。
- ある列に他の列のスカラー倍を加えても行列式は変わらない。すなわち p=q と c∈K に対し
det(…,ap+caq,…)=det(…,ap,…).
- ある列が零ベクトルなら行列式は 0 である。
- 以上はすべて「列」を「行」に置き換えても成り立つ。
証明(命題 4.3)
(1) は 定理 4.2 の証明の第 1 段(反対称性)そのものです。(2) は多重線形性の斉次性の部分であり、n 個の列すべてを c 倍すれば c が n 回出るので det(cA)=cndetA を得ます。(3) は第 p 変数についての加法性から
det(…,ap+caq,…)=det(…,ap,…)+cdet(…,aq,…)となり、右辺第 2 項は第 p 列と第 q 列がともに aq で一致するので交代性から 0 です。(4) は (2) で c=0 とすればよく、detA=det(…,0⋅0,…)=0⋅det(…)=0 となります。(5) は 命題 3.3 (1) により行と列の役割が交換できることから従います。
∎
(3) が重要です。掃き出し法で使う「ある行に他の行の定数倍を足す」という操作は行列式を一切変えないので、行列式の計算は掃き出しと相性が良いのです。§9 で実際に使います。
ライプニッツの公式は n 次を一気に定めますが、n 次を n−1 次に帰着させる漸化式も存在します。これが余因子展開であり、理論的には逆行列の公式を与え、実用上は「0 が多い行や列」を選んで手計算を軽くするために使われます。
定義 5.1(小行列式・余因子・余因子行列)
A∈Mn(K)(n≥2)に対し、第 i 行と第 j 列を取り除いて得られる n−1 次正方行列を Aij と書き、その行列式 detAij を A の (i,j) 小行列式といいます。また
aij=(−1)i+jdetAijを (i,j) 余因子といいます。余因子を転置して並べた行列
adjA=a11a12⋮a1na21a22a2n⋯⋯⋯an1an2⋮ann,(adjA)ij=ajiを A の余因子行列といいます。添字の順序が入れ替わっている点に注意してください。
定理 5.2(余因子展開(ラプラス展開))
n≥2、A∈Mn(K) とします。
- 各 j∈{1,…,n} を固定するとき(第 j 列に関する展開)
detA=i=1∑naijaij=i=1∑n(−1)i+jaijdetAij.
- 各 i∈{1,…,n} を固定するとき(第 i 行に関する展開)
detA=j=1∑naijaij=j=1∑n(−1)i+jaijdetAij.
証明(定理 5.2)
第 1 段 第 j 列を標準基底で分解します。aj=∑i=1naijei ですから、定理 4.2 で確かめた第 j 列についての線形性より
detA=i=1∑naijdetA(i,j)となります。ここで A(i,j) は A の第 j 列を ei に置き換えた行列です。よって detA(i,j)=(−1)i+jdetAij を示せば十分です。
第 2 段(列と行を端に寄せる) A(i,j) に対し、第 j 列を隣の列との入れ替えで n−j 回動かして最後尾に持っていきます(他の列の相対的な順序は保たれます)。続いて第 i 行を隣の行との入れ替えで n−i 回動かして最下段に持っていきます。命題 4.3 (1)(5) より、この操作で行列式は (−1)(n−j)+(n−i)=(−1)2n−i−j=(−1)i+j 倍されます。得られた行列を B とすれば
detB=(−1)i+jdetA(i,j).B の形を確かめます。最後の列はもともと ei で、その唯一の 1 は第 i 行にありましたが、その行が最下段に移ったので、B の最後の列は en です。また左上の (n−1)×(n−1) 部分は、A から第 i 行と第 j 列を除いた成分が元の順序のまま並んだもの、すなわち Aij です。したがって
B=(AijcT01)(cT は A の第 i 行から第 j 成分を除いたもの)と書けます。
第 3 段(detB=detAij) 定義に戻ります。detB=∑σsgn(σ)∏k=1nbσ(k)k において、第 n 列は en なので bσ(n)n=0 となるのは σ(n)=n のときだけであり、そのとき bnn=1 です。σ(n)=n なる σ は {1,…,n−1} 上の置換 σ′ と 1 対 1 に対応し、n は動かないので転倒する組も増えず sgn(σ)=sgn(σ′) です。さらに k≤n−1 かつ σ(k)≤n−1 のとき bσ(k)k は左上のブロックの成分、すなわち Aij の (σ′(k),k) 成分です。よって
detB=σ′∈Sn−1∑sgn(σ′)k=1∏n−1(Aij)σ′(k)k=detAij.第 2 段と合わせて detA(i,j)=(−1)i+jdetB=(−1)i+jdetAij となり、(1) が示されました。
第 4 段(行に関する展開) AT に (1) を適用します。AT の (j,i) 小行列は A の (i,j) 小行列の転置なので、命題 3.3 (1) からその行列式は detAij に等しく、また (AT)ji=aij です。したがって AT の第 i 列に関する展開が、そのまま A の第 i 行に関する展開になります。
∎
余因子展開は「0 が多い列(または行)を選ぶ」ほど得をします。基本変形で 0 を作ってから展開する、という合わせ技が実戦的です。
例 5.3(3 次のヴァンデルモンド行列式)
x1,x2,x3∈K に対し
V=1x1x121x2x221x3x32の行列式を求めます。まず第 3 行から第 2 行の x1 倍を引き、次に第 2 行から第 1 行の x1 倍を引きます(この順序が大切です。先に第 2 行を変えてしまうと、第 3 行の変形で使う行が変わってしまいます)。命題 4.3 (3)(5) より行列式は変わりません。
第 3 行は (x12−x1⋅x1, x22−x1x2, x32−x1x3)=(0, x2(x2−x1), x3(x3−x1)) となり、第 2 行は (x1−x1, x2−x1, x3−x1)=(0, x2−x1, x3−x1) となります。すなわち
detV=det1001x2−x1x2(x2−x1)1x3−x1x3(x3−x1).第 1 列に関して 定理 5.2 を適用すると、非零成分は (1,1) 成分の 1 だけで、その符号は (−1)1+1=+1 ですから
detV=det(x2−x1x2(x2−x1)x3−x1x3(x3−x1)).第 1 列から x2−x1 を、第 2 列から x3−x1 をくくり出すと(命題 4.3 (2))
detV=(x2−x1)(x3−x1)det(1x21x3)=(x2−x1)(x3−x1)(x3−x2).これはちょうど §2 の差積 Δ(x1,x2,x3) です。符号の理論に使った多項式が、行列式そのものとして再登場したことになります。同じ計算を n 次で繰り返せば detVn=∏i<j(xj−xi) が示せます。とくに x1,…,xn が相異なれば detVn=0 であり、これは相異なる n 点を通る n−1 次以下の多項式がただ一つ存在すること(ラグランジュ補間の一意性)と同値です。
余因子展開のもう一つの帰結は、逆行列の閉じた公式です。
命題 5.4(余因子行列の基本関係式)
n≥2、A∈Mn(K) に対し
A⋅adjA=(adjA)⋅A=(detA)Inが成り立ちます。とくに detA=0 ならば A は正則で A−1=detA1adjA です。
証明(命題 5.4)
(A⋅adjA)ik=∑j=1naij(adjA)jk=∑j=1naijakj です。
i=k のとき、これは 定理 5.2 (2) の第 i 行に関する展開そのものなので detA に等しくなります。
i=k のときを考えます。A の第 k 行を第 i 行で置き換えた行列を A′ とします。A′ は第 i 行と第 k 行が等しいので、交代性(定理 4.2 の第 3 段、および 命題 3.3 (1) により行についても成立)から detA′=0 です。一方 A′ の (k,j) 余因子は第 k 行を除いて作るので A の (k,j) 余因子 akj と一致し(A と A′ は第 k 行以外が同じです)、A′ の (k,j) 成分は aij です。よって A′ を第 k 行で余因子展開すると
0=detA′=j=1∑naijakjとなります。以上より A⋅adjA=(detA)In です。(adjA)⋅A=(detA)In も同様に、列に関する展開(定理 5.2 (1))と列の交代性を使えば示せます。最後の主張は detA=0 のとき両辺を detA で割ればよく、左右両方の積が In になるので adjA/detA は確かに逆行列です。
∎
行列の積の行列式が、行列式の積になる。この事実は行列式論の中心であり、証明は 定理 4.2 の「同定」の使い方の見本になっています。
定理 6.1(積の定理)
A,B∈Mn(K) に対し
det(AB)=detA⋅detB.
証明(定理 6.1)
A を固定します。B=(b1 ⋯ bn) と列で区切ると、行列の積の定義から AB の第 j 列は Abj です。そこで写像
D(b1,…,bn):=det(Ab1, Ab2, …, Abn)=det(AB)を考え、これが多重線形かつ交代的であることを確かめます。
多重線形性:b↦Ab は線形写像なので A(u+w)=Au+Aw、A(cu)=c(Au) が成り立ち、これを det の第 k 列の位置に入れれば、det が第 k 列について線形であること(定理 4.2 第 3 段)から D も第 k 変数について線形です。
交代性:bp=bq(p=q)ならば Abp=Abq なので det の第 p 列と第 q 列が一致し、det の交代性から D=0 です。
したがって 定理 4.2 が使えて
det(AB)=D(b1,…,bn)=D(e1,…,en)⋅detB.最後に D(e1,…,en)=det(Ae1,…,Aen) ですが、Aej は A の第 j 列 aj にほかならないので、これは detA です。以上より det(AB)=detAdetB を得ます。
∎
ここから直ちに次が従います。A が正則、すなわち AA−1=In なる A−1 が存在するとき、両辺の行列式を取ると detA⋅det(A−1)=detIn=1 です。K は体なので、この等式は detA=0 を意味し、同時に
det(A−1)=detA1
を与えます。また正則行列 P に対し det(P−1AP)=det(P−1)detAdetP=detA となり、相似な行列の行列式は等しいことがわかります。これは行列式が「基底の取り方によらない、線形変換そのものの量」であることを意味しており、後で固有値との関係を見るときの土台になります(固有値と固有ベクトル を参照してください)。さらに det(Ak)=(detA)k も帰納法で従います。
§1 で立てた問い「解けるかどうかを 1 個の数で言い当てられるか」に、ここで完全な答えを与えます。
定理 7.1(正則性の判定)
A=(a1 ⋯ an)∈Mn(K) に対し、次の 5 条件は同値です。
- detA=0。
- A は正則である。すなわち AB=BA=In を満たす B∈Mn(K) が存在する。
- 列ベクトル a1,…,an は一次独立である。
- 斉次方程式 Ax=0 の解は x=0 のみである。
- 任意の b∈Kn に対し、Ax=b はただ一つの解を持つ。
証明(定理 7.1)
(1)⇒(2)⇒(5)⇒(4)⇔(3)⇒(1) の順に示します。
(1)⇒(2) 命題 5.4 により B=(detA)−1adjA が AB=BA=In を満たします(n=1 のときは A=(a11)、a11=0 で B=(a11−1) とすればよく、以下でも n=1 の場合は同様に直接確かめられます)。
(2)⇒(5) x=Bb とおくと Ax=ABb=b なので解が存在します。一意性は、Ax=Ax′=b ならば左から B を掛けて x=BAx=BAx′=x′ となることからわかります。
(5)⇒(4) (5) を b=0 に適用します。A0=0 ですから x=0 は Ax=0 の解の一つであり、(5) によれば解は一つしかないのですから、それが唯一の解です。
(4)⇔(3) 行列とベクトルの積の定義から Ax=x1a1+⋯+xnan です。したがって「Ax=0 の解が x=0 のみ」は「x1a1+⋯+xnan=0 ならば x1=⋯=xn=0」と同じ文であり、これが一次独立の定義(定義 5.1[ベクトル空間と線形変換])です。
(3)⇒(1) a1,…,an は n 次元ベクトル空間 Kn の一次独立な n 個のベクトルなので、Kn の基底をなします(命題 5.7[ベクトル空間と線形変換]。ベクトル空間と線形変換 を参照してください)。よって各標準基底ベクトルが ej=∑i=1nbijai と表せます。この係数を並べた行列を B=(bij) とすると、この n 本の等式はまとめて AB=In と書けます。両辺の行列式を取り 定理 6.1 を使うと detA⋅detB=detIn=1 となるので、detA=0 です。
∎
flowchart LR
D1["det A ≠ 0"] -->|余因子行列で逆行列を作る| D2["A は正則"]
D2 -->|x = Bb と一意性| D3["Ax = b が常に一意に解ける"]
D3 -->|b = 0 とおく| D4["Ax = 0 の解は x = 0 のみ"]
D4 -->|Ax は列の一次結合| D5["列ベクトルが一次独立"]
D5 -->|基底に直して AB = I、積の定理| D1
正則性をめぐる同値性の証明の筋道
注意 7.2(一次従属なら行列式は 0(直接証明))
(3)⇒(1) の対偶、つまり「列が一次従属ならば detA=0」は、基底の理論を使わずに多重線形性から直接示せます。実際、ak=∑j=kcjaj と書けたとすると、第 k 変数についての線形性から
detA=det(…,∑j=kcjaj,…)=∑j=kcjdet(…,aj,…)となり、右辺の各項は第 k 列と第 j 列がともに aj で一致するので交代性から 0 です。実務では「det=0 を見たら列(または行)の間に一次関係がある」と読むこの向きをよく使います。
この定理により、行列式は理論の要所で判定装置として働きます。たとえば λ∈K が A の固有値であるとは Ax=λx を満たす x=0 が存在すること、すなわち (λIn−A)x=0 が非自明解を持つことです。定理 7.1 の (1)⇔(4) より、これは
φA(λ)=det(λIn−A)=0
と同値になります。固有値の議論が「n 次方程式の根を求める」問題に翻訳できるのは、この同値性のおかげです。この多項式 φA は 特性多項式(定義 4.1)[固有値と固有ベクトル] と呼ばれます。詳しくは 固有値と固有ベクトル で扱います。
ここまで代数的に扱ってきた行列式が、なぜ「つぶれているかどうか」を測れるのか。答えは面積・体積です。まず 2 次元で完全に証明します。
命題 8.1(2 次の行列式と平行四辺形の面積)
u=(ac)、v=(bd) を R2 のベクトルとし、A=(u v) とします。u,v が張る平行四辺形
P={su+tv∣0≤s≤1, 0≤t≤1}の面積は ∣detA∣=∣ad−bc∣ に等しい。
証明(命題 8.1)
u=0 または v=0 なら P は線分または点で面積 0、行列式も 命題 4.3 (4) より 0 なので成立します。以下 u,v=0 とし、両者のなす角を θ∈[0,π] とします。平行四辺形の面積は「底辺 × 高さ」で S=∥u∥⋅∥v∥sinθ です(sinθ≥0 に注意)。
内積となす角の関係 ⟨u,v⟩=∥u∥∥v∥cosθ(角度の定義は 定義 4.5[内積空間とグラム・シュミット直交化])を用いると
S2=∥u∥2∥v∥2sin2θ=∥u∥2∥v∥2−∥u∥2∥v∥2cos2θ=∥u∥2∥v∥2−⟨u,v⟩2です。成分で書き下すと ∥u∥2=a2+c2、∥v∥2=b2+d2、⟨u,v⟩=ab+cd ですから
S2=(a2+c2)(b2+d2)−(ab+cd)2=a2b2+a2d2+c2b2+c2d2−(a2b2+2abcd+c2d2)=a2d2−2abcd+b2c2=(ad−bc)2.S≥0 なので S=∣ad−bc∣=∣detA∣ です。
∎
一般の n でも同じことが成り立ちます。a1,…,an∈Rn の張る平行体を P(a1,…,an)={∑itiai∣0≤ti≤1} とし、その体積を vol で表します。「体積」が満たすべき性質を素朴に列挙すると、次のようになります。
- 正規化:単位立方体 P(e1,…,en) の体積は 1。
- 斉次性:1 辺を c 倍(c>0)すれば体積は c 倍。
- せん断不変性:ある辺に他の辺の定数倍を足しても体積は変わらない(底面と高さが変わらないため)。
- 退化:辺が一次従属なら平行体は低い次元に押しつぶされ、体積は 0。
ここで符号を込めた量 vol(右手系なら正、左手系なら負とする符号付き体積)を考えると、斉次性は c<0 も含めて成り立ち、加法性と合わせて多重線形性になります。せん断不変性と退化は交代性の別表現です。つまり vol は多重線形・交代的で単位立方体に 1 を与える写像であり、定理 4.2 によって
vol(a1,…,an)=det(a1 ⋯ an)
でなければなりません。行列式とは符号付き体積の別名なのです。厳密には Rn のルベーグ測度 μ に対する等式 μ(A(E))=∣detA∣μ(E)(E は可測集合)として述べられ、その証明は重積分の変数変換公式の一部として解析学で与えられます。
単位正方形は線形変換 A によって平行四辺形に写り、面積は det A の絶対値倍になる
例 8.2(拡大率・せん断・裏返し)
図の右側は
A=(221123),detA=2⋅23−1⋅21=3−21=25による像です。単位正方形(面積 1)が面積 5/2 の平行四辺形に写っています。命題 8.1 を u=Ae1=(2,1/2)T、v=Ae2=(1,3/2)T に適用しても ∣2⋅3/2−1⋅1/2∣=5/2 で一致します。
典型的な変換を並べると、行列式が何を測っているかがはっきりします。次の 5 つの行列を考えます。
Sk=(10k1),Rθ=(cosθsinθ−sinθcosθ),F=(0110),E=(3001),Π=(1000)
| 行列 | 変換 | 行列式 | 幾何的な意味 |
|---|
| Sk | せん断 | 1⋅1−k⋅0=1 | 傾けるだけで、面積も向きも保つ |
| Rθ | 回転 | cos2θ+sin2θ=1 | 面積も向きも保つ |
| F | 軸の入れ替え(鏡映) | 0⋅0−1⋅1=−1 | 面積は保つが向きが反転する |
| E | 横方向の拡大 | 3⋅1−0⋅0=3 | 面積が 3 倍になる |
| Π | 第 1 軸への射影 | 1⋅0−0⋅0=0 | 直線につぶれ、面積が消える |
最後の行が 定理 7.1 の幾何的な意味です。detA=0 とは、単位立方体の像が「厚みを失う」ことであり、そのとき A は情報を落としているので逆変換が作れません。
積の定理も幾何的に読めます。B が体積を detB 倍にし、A が体積を detA 倍にするなら、続けて施した AB は体積を detA⋅detB 倍にするはずです。定理 6.1 はこの直観の正確な形です。det(A−1)=1/detA も「拡大したものを元に戻すには同じ率で縮める」と読めます。
理論的な定義と実際の計算手順は別物です。ライプニッツの公式は n! 個の項の和であり、各項が n−1 回の乗算を含むので、必要な乗算はおよそ n!⋅(n−1) 回です。一方、行基本変形で上三角化してから対角成分を掛ける方法(ガウスの消去法、LU 分解)は乗除算がおよそ n3/3 回で済みます。
| n | ライプニッツの公式の項数 n! | 掃き出しの乗除算回数(概算 n3/3) |
|---|
| 5 | 120 | 約 42 |
| 10 | 3628800 | 約 333 |
| 20 | 約 2.4×1018 | 約 2667 |
| 50 | 約 3.0×1064 | 約 41667 |
n=20 の時点で、毎秒 109 項を計算できる計算機でもライプニッツの公式は 70 年以上かかります。定義式をそのまま実装してはいけません。
例 9.1(4 次行列式を二通りに計算する)
A=02621153231691154方法 1:行基本変形。 まず第 1 行と第 2 行を入れ替えます。命題 4.3 (1)(5) より、この操作で行列式は −1 倍になるので、入れ替えた行列を A′ とすると detA′=−detA です。
A′=20621153321691154次に、第 3 行から第 1 行の 3 倍を、第 4 行から第 1 行の 1 倍を引きます。命題 4.3 (3)(5) より行列式は変わりません。
2000112232761123続いて第 3 行と第 4 行から第 2 行の 2 倍を引き、最後に第 4 行から第 3 行の 2/3 倍を引きます。
2000110032321101⟶2000110032301101上三角になったので 命題 3.3 (2) より、この行列の行列式は 2⋅1⋅3⋅1=6 です。これは detA′ に等しく、detA=−detA′=−6 を得ます。
方法 2:余因子展開。 第 1 行は 0 を含むので展開に向いています。定理 5.2 (2) を i=1 で使うと、符号は (−1)1+j ですから
detA=−1⋅detA12+2⋅detA13−1⋅detA14です(a11=0 の項は消えます)。3 つの小行列式をサラスの規則で計算します。
detA12=det2623169154=2(64−45)−3(24−10)+1(54−32)=38−42+22=18,detA13=det262153154=2(20−15)−1(24−10)+1(18−10)=10−14+8=4,detA14=det2621533169=2(45−48)−1(54−32)+3(18−10)=−6−22+24=−4.よって detA=−18+8+4=−6 となり、方法 1 と一致します。4 次でも余因子展開は 3 次を 3 回計算する必要があり、次数が上がると急速に不利になります。
数値計算ライブラリも内部では LU 分解を使っています。
print(np.linalg.det(A)) # -6.0 にごく近い値(浮動小数点誤差を含む)
sign, logabsdet = np.linalg.slogdet(A)
print(sign, np.exp(logabsdet)) # -1.0 と 6.0 にごく近い値
slogdet は符号と log∣detA∣ を別々に返します。次元が大きいと det そのものは容易に桁あふれ・桁落ちを起こす(対角成分の積なので、1000 個の 0.1 を掛ければ 10−1000 になります)ため、統計や機械学習では det ではなく logdet を扱うのが標準です。対称正定値行列 Σ ならコレスキー分解 Σ=LLT を使って
logdetΣ=log((detL)2)=2i=1∑nlogLii
と計算できます(定理 6.1 と 命題 3.3 (1)(2) を使いました)。
例 9.2(共分散行列の行列式(一般化分散))
2 変数のデータから標本共分散行列
S=(4223)が得られたとします。detS=4⋅3−2⋅2=8 であり、この値を一般化分散と呼びます。意味を見ます。
まず固有値を求めます。φS(λ)=det(λI2−S)=(λ−4)(λ−3)−4=λ2−7λ+8 で、根は λ=(7±17)/2、数値では λ1≈5.562、λ2≈1.438 です。積を取ると λ1λ2=8=detS、和は λ1+λ2=7=trS になっています。
積が一致するのは偶然ではありません。特性多項式 φA(λ)=det(λIn−A) は、ライプニッツの公式で σ=id の項が ∏i(λ−aii)、それ以外の項の次数が n−2 以下であることから、λ の n 次モニック多項式です。よって複素数の範囲で φA(λ)=∏i=1n(λ−λi) と因数分解できます。λ=0 を代入すると、左辺は det(−A)=(−1)ndetA(命題 4.3 (2))、右辺は (−1)n∏iλi ですから
detA=λ1λ2⋯λnが一般に成り立ちます。行列式は固有値の積なのです(系 4.5[固有値と固有ベクトル]。対角化とジョルダン標準形 も参照してください)。
幾何的な意味も明快です。楕円 E={x∈R2∣xTS−1x≤1}(データの散らばりを表す等確率楕円)は、単位円板を S1/2 で写した像なので、その面積は 命題 8.1 の一般化により π⋅det(S1/2)=πdetS=22π≈8.886 です。一般化分散はデータ雲の「広がりの体積」を測っていることになります。もし 2 つの変数が完全に相関していれば楕円は線分につぶれ、detS=0 になります。
この視点は主成分分析(PCA)に直結します。PCA は共分散行列を直交行列で対角化して分散の大きい方向を取り出す手法で、detS=∏iλi は各主成分の分散の積、すなわち全体の広がりの体積です。λi のうち極端に小さいものがあれば、その方向にはほとんど情報がなく、次元を削っても失うものが少ない、と判断できます。また多変量正規分布の対数尤度に現れる −21logdetΣ の項は、この「広がりの体積」に対する罰則として働きます。直交行列による対角化の一般論は 内積空間とグラム・シュミット直交化 と スペクトル定理 で扱います(実対称行列が直交行列で対角化できることは 系 4.3[スペクトル定理])。
演習 10.1易
平面上の 3 点 P(1,2)、Q(4,3)、R(2,6) を頂点とする三角形の面積を、行列式を用いて求めてください。また P→Q→R の回り方が反時計回りか時計回りかを判定してください。
解答
P を基点として PQ=(3,1)T、PR=(1,4)T です。この 2 ベクトルが張る平行四辺形の面積は 命題 8.1 より
det(3114)=∣3⋅4−1⋅1∣=11です。三角形はこの平行四辺形の半分なので、面積は 11/2 です。
符号は det=11>0 ですから、(PQ,PR) は標準基底 (e1,e2) と同じ向き、すなわち反時計回りです。§8 で述べたとおり、行列式の絶対値が面積を、符号が向きを担っています。
演習 10.2標準
n を奇数とし、A∈Mn(R) が交代行列(AT=−A)であるとします。detA=0 を示してください。また、n が偶数のときにはこの結論が成り立たないことを n=2 の例で示してください。
解答
命題 3.3 (1) より detA=detAT です。仮定 AT=−A を代入すると detA=det(−A) となります。ここで −A は A の n 個の列すべてを −1 倍したものですから、命題 4.3 (2) より det(−A)=(−1)ndetA です。n が奇数なので (−1)n=−1、したがって
detA=−detAとなり、両辺に detA を加えて 2detA=0 を得ます。R では 2=0 なので detA=0 です。
n が偶数のときは (−1)n=1 となり上の議論は何も言いません。実際、n=2 で
A=(0−110)は AT=−A を満たす交代行列ですが、detA=0⋅0−1⋅(−1)=1=0 です。奇数という仮定が本質的だったことがわかります。
演習 10.3標準
p,q≥1、n=p+q とし、A∈Mp(K)、D∈Mq(K)、B を p×q 行列、O を q×p 零行列として
M=(AOBD)∈Mn(K)とします。detM=detA⋅detD を示してください。
解答
定義(定義 3.1)に従い detM=∑σ∈Snsgn(σ)∏j=1nmσ(j)j を考えます。M の成分は、i>p かつ j≤p のとき(左下のブロック O の位置)mij=0 です。
項が 0 でないためには、すべての j≤p について σ(j)≤p が必要です。これは σ が {1,…,p} を {1,…,p} の中へ写すということで、σ が単射で集合が有限であることから、{1,…,p} の上への全単射になります。したがって σ は残りの {p+1,…,n} も自分自身の上に写します。そこで α∈Sp を σ の {1,…,p} への制限、β∈Sq を β(k)=σ(p+k)−p で定めると、σ と対 (α,β) は 1 対 1 に対応します。
符号を比べます。転倒する組は 3 種類に分かれます。両方が {1,…,p} に属する組の転倒数は inv(α)、両方が {p+1,…,n} に属する組の転倒数は inv(β) です。i≤p<j という組については σ(i)≤p<σ(j) なので決して転倒しません。よって inv(σ)=inv(α)+inv(β)、すなわち sgn(σ)=sgn(α)sgn(β) です。
積の部分は、j≤p では mσ(j)j=aα(j)j、j=p+k(k≤q)では mσ(j)j=dβ(k)k です。以上をまとめると
detM=α∈Sp∑β∈Sq∑sgn(α)sgn(β)j=1∏paα(j)jk=1∏qdβ(k)k=(α∑sgn(α)j∏aα(j)j)β∑sgn(β)k∏dβ(k)kとなり、右辺は detA⋅detD です。なお右上のブロック B が結果に一切現れないことに注意してください。これは 命題 3.3 (2) の三角行列の公式のブロック版です。
演習 10.4難
n≥2 とします。任意の A∈Mn(K) に対し det(adjA)=(detA)n−1 が成り立つことを示してください(detA=0 の場合も含めて示すこと)。
解答
命題 5.4 より A⋅adjA=(detA)In です。両辺の行列式を取り、定理 6.1 と 命題 4.3 (2)(det(cIn)=cndetIn=cn)を使うと
detA⋅det(adjA)=(detA)n⋯(∗)を得ます。
場合 1:detA=0。 (∗) の両辺を detA で割って det(adjA)=(detA)n−1 です。
場合 2:detA=0。 このとき右辺は n−1≥1 より (detA)n−1=0 なので、det(adjA)=0 を示せば十分です((∗) は 0=0 となるだけで情報を与えないため、別の議論が必要です)。背理法で det(adjA)=0 と仮定します。定理 7.1 より adjA は正則で、逆行列 (adjA)−1 を持ちます。一方 命題 5.4 と detA=0 から A⋅adjA=O ですから、右から (adjA)−1 を掛けて A=O となります。しかし A=O ならば、その (i,j) 小行列はすべて n−1≥1 次の零行列であり、行列式は 0(命題 4.3 (4))なので全余因子が 0、すなわち adjA=O です。これは adjA が正則であることに矛盾します。よって det(adjA)=0=(detA)n−1 です。
(n≥2 という仮定は場合 2 で本質的に効いています。n=1 では adjA=(1) と約束するため det(adjA)=1=(detA)0 となり、結論自体は成り立ちますが、上の議論はそのままでは使えません。)
- 齋藤正彦『線型代数入門』東京大学出版会、1966 — 行列式の章。置換の符号からライプニッツの公式、余因子展開までの標準的な流れ。
- 佐武一郎『線型代数学』裳華房(数学選書)、新装版 2015 — 行列式の章。交代多重線形形式としての扱いが明快です。
- S. Lang, Linear Algebra, 3rd ed., Springer, 1987 — 行列式の章。この記事の 定理 4.2 のような公理的特徴づけを軸にした構成。
- 杉浦光夫『解析入門 II』東京大学出版会、1985 — 重積分の変数変換公式。∣det∣ が体積の拡大率として現れることの解析的な証明。
- G. H. Golub, C. F. Van Loan, Matrix Computations, 4th ed., Johns Hopkins University Press, 2013 — ガウスの消去法と LU 分解の章。行列式の数値計算と桁あふれの扱い。
- M. Kline, Mathematical Thought from Ancient to Modern Times, Oxford University Press, 1972 — 行列式と行列の章。関孝和・ライプニッツ・クラメル・コーシーに至る歴史的経緯。