行列式の定義・計算方法・幾何学的意味

地図を2倍に拡大コピーすると、面積は4倍になります。では、拡大ではなく「歪んだ引き伸ばし」をした場合、面積はどうなるでしょうか。行列式は、この疑問に対する完全な答えを与えてくれます。

2つのベクトル $\bm{a} = (a_1, a_2)$ と $\bm{b} = (b_1, b_2)$ が張る平行四辺形の面積はどう計算するでしょうか。答えは $|a_1 b_2 – a_2 b_1|$ であり、これはまさに $2 \times 2$ 行列 $\begin{pmatrix} a_1 & b_1 \\ a_2 & b_2 \end{pmatrix}$ の行列式の絶対値です。

行列式は一見すると複雑な計算に見えますが、その本質は「行列が空間をどれだけ拡大・縮小するか」という幾何学的なスケーリング因子です。行列式が正なら空間の向きが保存され、負なら反転し、ゼロなら次元が潰れます。

日常的なたとえで言えば、行列式はゴムシートの「伸縮率」に相当します。正方形のゴムシートの四隅を引っ張って平行四辺形にしたとき、元の面積の何倍になっているかが行列式の絶対値であり、シートが裏返しになっているかどうかが符号に対応します。

行列式を理解すると、以下のような応用が開けます。

  • 固有値の計算: 特性方程式 $\det(\bm{A} – \lambda\bm{I}) = 0$ の基礎
  • 逆行列の判定: $\det(\bm{A}) \neq 0$ ⟺ $\bm{A}$ は正則(逆行列が存在)
  • 座標変換: ヤコビアン(座標変換のヤコビ行列式)は重積分の変数変換に不可欠
  • 連立方程式: クラメルの公式による解の表現
  • 物理学: 慣性テンソルの行列式から回転対称性を判定

本記事の内容

  • 行列式の定義(置換による定義と再帰的定義)
  • 計算方法(余因子展開、サルスの方法、行基本変形)
  • 行列式の性質(乗法性、転置不変性、行列の積の行列式)
  • 幾何学的意味(面積・体積の変換比)
  • クラメルの公式と逆行列
  • Pythonによる実装と可視化

前提知識

この記事を読む前に、以下の記事を読んでおくと理解が深まります。

行列式とは — 空間の「拡大率」

直感的な理解

家の設計図を拡大コピーすると、長さは2倍でも面積は4倍($2^2$倍)になります。これは「スケーリング因子2」の2次元版です。行列式は、行列による線形変換がこの「スケーリング因子」を一般化したものです。

$2 \times 2$ 行列 $\bm{A} = \begin{pmatrix} a & b \\ c & d \end{pmatrix}$ は、単位正方形を平行四辺形に変換します。この平行四辺形の符号付き面積が行列式 $\det(\bm{A}) = ad – bc$ です。符号は向き(右手系か左手系か)を表します。

具体例で考えてみましょう。$\bm{A} = \begin{pmatrix} 2 & 0 \\ 0 & 3 \end{pmatrix}$ は $x$ 方向に2倍、$y$ 方向に3倍の拡大を表します。単位正方形(面積1)は長方形(面積6)に変換されます。$\det(\bm{A}) = 2 \times 3 – 0 \times 0 = 6$ であり、確かに面積比と一致しています。

次に $\bm{A} = \begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix}$ を考えましょう。これは「せん断変換」($x$ 方向のずらし)であり、正方形を平行四辺形に変えます。しかし $\det(\bm{A}) = 1 \times 1 – 1 \times 0 = 1$ であり、面積は変わりません。せん断変換は形を変えるが面積を変えない、という性質が行列式の値に反映されています。

3次元では、$3 \times 3$ 行列の行列式は単位立方体が変換されてできる平行六面体の符号付き体積です。$n$ 次元では $n$ 次元平行体の符号付き体積に対応します。

行列式がゼロの意味

$\det(\bm{A}) = 0$ は、変換後の平行四辺形(平行六面体)の面積(体積)がゼロであることを意味します。つまり、空間が「潰れて」次元が落ちています。これは $\bm{A}$ の列ベクトルが線形従属であること、すなわち $\bm{A}$ が正則でない(逆行列を持たない)ことと同値です。

こうした直感を踏まえて、行列式の厳密な定義に進みましょう。

行列式の定義

$2 \times 2$ と $3 \times 3$ の場合

$2 \times 2$ 行列式:

$$ \begin{equation} \det\begin{pmatrix} a & b \\ c & d \end{pmatrix} = ad – bc \end{equation} $$

この公式は「主対角線の積から副対角線の積を引く」と覚えると便利です。たとえば

$$ \det\begin{pmatrix} 3 & 2 \\ 1 & 4 \end{pmatrix} = 3 \times 4 – 2 \times 1 = 12 – 2 = 10 $$

この結果は、ベクトル $(3, 1)$ と $(2, 4)$ が張る平行四辺形の面積が10であることを意味します。

$3 \times 3$ 行列式はサルスの方法(Sarrus’ rule)で計算できます。

$$ \det\begin{pmatrix} a_1 & a_2 & a_3 \\ b_1 & b_2 & b_3 \\ c_1 & c_2 & c_3 \end{pmatrix} = a_1 b_2 c_3 + a_2 b_3 c_1 + a_3 b_1 c_2 – a_3 b_2 c_1 – a_2 b_1 c_3 – a_1 b_3 c_2 $$

サルスの方法の覚え方は、行列の右に最初の2列をもう一度書き並べ、右下がりの3本の対角線の積を加え、右上がりの3本の対角線の積を引く、というものです。

具体的な数値で計算してみましょう。

$$ \det\begin{pmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{pmatrix} $$

サルスの方法を適用すると

正の項: $1 \times 5 \times 9 + 2 \times 6 \times 7 + 3 \times 4 \times 8 = 45 + 84 + 96 = 225$

負の項: $3 \times 5 \times 7 + 2 \times 4 \times 9 + 1 \times 6 \times 8 = 105 + 72 + 48 = 225$

$$ \det = 225 – 225 = 0 $$

行列式がゼロです。これは3行目が1行目と2行目の線形結合($(7, 8, 9) = 2 \times (4, 5, 6) – (1, 2, 3)$)であるため、3つの行ベクトルが同一平面上にあり、立体的な体積を持てないことを反映しています。

注意: サルスの方法は $3 \times 3$ 行列でのみ使える特別な方法であり、$4 \times 4$ 以上の行列には適用できません。一般の $n \times n$ 行列には、以下の置換による定義や余因子展開を使います。

置換による一般定義

$n \times n$ 行列 $\bm{A} = (a_{ij})$ の行列式は

$$ \begin{equation} \det(\bm{A}) = \sum_{\sigma \in S_n} \text{sgn}(\sigma) \prod_{i=1}^{n} a_{i, \sigma(i)} \end{equation} $$

ここで $S_n$ は $\{1, 2, \ldots, n\}$ の全ての置換の集合($n!$ 個)、$\text{sgn}(\sigma)$ は置換の符号(偶置換で $+1$、奇置換で $-1$)です。

置換とは、数の並べ替えのことです。$n = 3$ の場合、$S_3$ は以下の $3! = 6$ 個の置換を含みます。

置換 $\sigma$ $(\sigma(1), \sigma(2), \sigma(3))$ 互換の数 符号
恒等置換 $(1, 2, 3)$ 0 $+1$
$(1 \leftrightarrow 2)$ $(2, 1, 3)$ 1 $-1$
$(1 \leftrightarrow 3)$ $(3, 2, 1)$ 1 $-1$
$(2 \leftrightarrow 3)$ $(1, 3, 2)$ 1 $-1$
巡回 $(1 \to 2 \to 3)$ $(2, 3, 1)$ 2 $+1$
巡回 $(1 \to 3 \to 2)$ $(3, 1, 2)$ 2 $+1$

$2 \times 2$ の場合にこの定義を適用してみましょう。$S_2 = \{(1,2), (2,1)\}$ で、$(1,2)$ は偶置換(符号 $+1$)、$(2,1)$ は奇置換(符号 $-1$)です。

$$ \det(\bm{A}) = (+1) \cdot a_{11}a_{22} + (-1) \cdot a_{12}a_{21} = a_{11}a_{22} – a_{12}a_{21} = ad – bc $$

先ほどの $2 \times 2$ の公式が導かれました。同様に $3 \times 3$ の場合に6つの置換を適用すると、サルスの方法の6項が得られます。

この定義は理論的には完全ですが、$n!$ 個の項があるため、$n$ が大きくなると計算量が爆発します。$n = 10$ なら $10! = 3{,}628{,}800$ 項、$n = 20$ なら $20! \approx 2.4 \times 10^{18}$ 項です。実用的な計算には余因子展開($O(n!)$ だが再帰的で実装しやすい)や行基本変形($O(n^3)$)を使います。

余因子展開

$n \times n$ 行列の行列式は、$i$ 行(または $j$ 列)に沿って展開できます。

$$ \begin{equation} \det(\bm{A}) = \sum_{j=1}^{n} (-1)^{i+j} a_{ij} M_{ij} \end{equation} $$

ここで $M_{ij}$ は $(i, j)$ 小行列式($i$ 行と $j$ 列を除いた $(n-1) \times (n-1)$ 行列の行列式)です。$(-1)^{i+j} M_{ij}$ を余因子 $C_{ij}$ と呼びます。

この展開は再帰的に適用でき、最終的に $2 \times 2$ の行列式に帰着します。

具体例として $3 \times 3$ 行列の余因子展開を第1行に沿って行ってみましょう。

$$ \bm{A} = \begin{pmatrix} 2 & 1 & 3 \\ 0 & 4 & 5 \\ 1 & 0 & 2 \end{pmatrix} $$

第1行に沿った余因子展開は

$$ \det(\bm{A}) = a_{11} C_{11} + a_{12} C_{12} + a_{13} C_{13} $$

各余因子を計算します。

$C_{11} = (-1)^{1+1} M_{11}$: 第1行と第1列を除いた小行列の行列式

$$ C_{11} = (+1) \det\begin{pmatrix} 4 & 5 \\ 0 & 2 \end{pmatrix} = 4 \times 2 – 5 \times 0 = 8 $$

$C_{12} = (-1)^{1+2} M_{12}$: 第1行と第2列を除いた小行列の行列式

$$ C_{12} = (-1) \det\begin{pmatrix} 0 & 5 \\ 1 & 2 \end{pmatrix} = (-1)(0 \times 2 – 5 \times 1) = 5 $$

$C_{13} = (-1)^{1+3} M_{13}$: 第1行と第3列を除いた小行列の行列式

$$ C_{13} = (+1) \det\begin{pmatrix} 0 & 4 \\ 1 & 0 \end{pmatrix} = 0 \times 0 – 4 \times 1 = -4 $$

したがって

$$ \det(\bm{A}) = 2 \times 8 + 1 \times 5 + 3 \times (-4) = 16 + 5 – 12 = 9 $$

展開する行や列の選び方のコツ: ゼロが多い行や列に沿って展開すると、計算量が減ります。上の例で第2行に沿って展開すると、$a_{21} = 0$ なので最初の項が消え、2つの小行列式の計算で済みます。

行基本変形による計算

余因子展開は概念的にわかりやすいですが、計算量は $O(n!)$ であり大きな行列には向きません。実用的には、行基本変形で上三角行列に変形してから対角成分の積を取る方法が $O(n^3)$ で効率的です。

上三角行列の行列式は対角成分の積です。

$$ \det\begin{pmatrix} u_{11} & u_{12} & \cdots & u_{1n} \\ 0 & u_{22} & \cdots & u_{2n} \\ \vdots & \ddots & \ddots & \vdots \\ 0 & \cdots & 0 & u_{nn} \end{pmatrix} = u_{11} u_{22} \cdots u_{nn} $$

先ほどの行列 $\bm{A}$ を行基本変形で上三角化してみましょう。

$$ \begin{pmatrix} 2 & 1 & 3 \\ 0 & 4 & 5 \\ 1 & 0 & 2 \end{pmatrix} $$

第3行から第1行の $1/2$ 倍を引くと(行列式は不変)

$$ R_3 \leftarrow R_3 – \frac{1}{2}R_1: \quad \begin{pmatrix} 2 & 1 & 3 \\ 0 & 4 & 5 \\ 0 & -1/2 & 1/2 \end{pmatrix} $$

第3行から第2行の $-1/8$ 倍を引くと($-1/2 = (-1/8) \times 4$ を消すため)

$$ R_3 \leftarrow R_3 – \left(-\frac{1}{8}\right)R_2: \quad \begin{pmatrix} 2 & 1 & 3 \\ 0 & 4 & 5 \\ 0 & 0 & 1/2 + 5/8 \end{pmatrix} = \begin{pmatrix} 2 & 1 & 3 \\ 0 & 4 & 5 \\ 0 & 0 & 9/8 \end{pmatrix} $$

上三角化が完了しました。行列式は対角成分の積です。

$$ \det(\bm{A}) = 2 \times 4 \times \frac{9}{8} = \frac{72}{8} = 9 $$

余因子展開の結果と一致しています。行基本変形は手計算でもプログラムでも効率的な方法です。

行列式の性質を使った計算方法を学んだところで、次にそれらの性質を整理しましょう。

行列式の性質

基本性質

  1. 転置不変性: $\det(\bm{A}^T) = \det(\bm{A})$
  2. 乗法性: $\det(\bm{A}\bm{B}) = \det(\bm{A})\det(\bm{B})$
  3. 逆行列: $\det(\bm{A}^{-1}) = 1/\det(\bm{A})$
  4. スカラー倍: $\det(c\bm{A}) = c^n \det(\bm{A})$($n \times n$ 行列)
  5. 行の交換: 2つの行を交換すると行列式の符号が反転
  6. 行のスカラー倍: 1つの行を $c$ 倍すると行列式も $c$ 倍
  7. 行の加算: ある行に別の行のスカラー倍を足しても行列式は不変

性質5-7は行基本変形による行列式の計算に使います。上三角行列に変形すれば、行列式は対角成分の積です。

各性質を数値例で確認してみましょう。

乗法性の確認: $\bm{A} = \begin{pmatrix} 2 & 1 \\ 0 & 3 \end{pmatrix}$、$\bm{B} = \begin{pmatrix} 1 & 2 \\ 1 & 0 \end{pmatrix}$ とすると

$$ \det(\bm{A}) = 6, \quad \det(\bm{B}) = -2 $$

$$ \bm{AB} = \begin{pmatrix} 3 & 4 \\ 3 & 0 \end{pmatrix}, \quad \det(\bm{AB}) = 0 – 12 = -12 = 6 \times (-2) = \det(\bm{A})\det(\bm{B}) $$

乗法性が確認できました。この性質は、2つの線形変換を続けて行うとき、全体の面積変化率が各変換の面積変化率の積であるという直感的な事実と一致しています。

スカラー倍の確認: $\bm{A} = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}$、$c = 2$ とすると

$$ \det(\bm{A}) = 4 – 6 = -2, \quad 2\bm{A} = \begin{pmatrix} 2 & 4 \\ 6 & 8 \end{pmatrix}, \quad \det(2\bm{A}) = 16 – 24 = -8 = 2^2 \times (-2) $$

$n = 2$ なので $c^n = 4$ 倍になっています。これは、すべての辺を $c$ 倍すると $n$ 次元の体積が $c^n$ 倍になることに対応します。

行の交換の確認: $\bm{A} = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}$ の行を交換した $\bm{A}’ = \begin{pmatrix} 3 & 4 \\ 1 & 2 \end{pmatrix}$ では

$$ \det(\bm{A}) = -2, \quad \det(\bm{A}’) = 6 – 4 = 2 = -\det(\bm{A}) $$

符号が反転しています。行の交換は空間の向きを反転させる操作に対応しています。

固有値との関係

$\det(\bm{A}) = \lambda_1 \lambda_2 \cdots \lambda_n$(固有値の積)です。これは特性多項式の定数項から導かれます。

特性多項式 $p(\lambda) = \det(\bm{A} – \lambda\bm{I})$ を考えましょう。$\lambda = 0$ を代入すると $p(0) = \det(\bm{A})$ です。一方、特性多項式は $p(\lambda) = (\lambda_1 – \lambda)(\lambda_2 – \lambda) \cdots (\lambda_n – \lambda)$ と因数分解されるので、$p(0) = \lambda_1 \lambda_2 \cdots \lambda_n$ となり、$\det(\bm{A}) = \lambda_1 \lambda_2 \cdots \lambda_n$ が導かれます。

数値例で確認しましょう。$\bm{A} = \begin{pmatrix} 4 & 2 \\ 1 & 3 \end{pmatrix}$ の行列式は $\det(\bm{A}) = 12 – 2 = 10$ です。特性方程式 $\det(\bm{A} – \lambda\bm{I}) = (4 – \lambda)(3 – \lambda) – 2 = \lambda^2 – 7\lambda + 10 = (\lambda – 5)(\lambda – 2) = 0$ より、固有値は $\lambda_1 = 5$、$\lambda_2 = 2$ です。$\lambda_1 \lambda_2 = 10 = \det(\bm{A})$ であり、確かに一致しています。

また $\text{tr}(\bm{A}) = \lambda_1 + \lambda_2 + \cdots + \lambda_n$(固有値の和)も重要な関係です。上の例では $\text{tr}(\bm{A}) = 4 + 3 = 7 = 5 + 2$ です。行列式とトレースを合わせると、固有値に関する多くの情報が得られます。

クラメルの公式

連立一次方程式 $\bm{A}\bm{x} = \bm{b}$ の解は

$$ \begin{equation} x_j = \frac{\det(\bm{A}_j)}{\det(\bm{A})} \end{equation} $$

ここで $\bm{A}_j$ は $\bm{A}$ の $j$ 列を $\bm{b}$ で置き換えた行列です。

具体例として、以下の連立方程式を解いてみましょう。

$$ \begin{cases} 2x + y = 5 \\ 3x + 4y = 11 \end{cases} $$

行列形式では $\bm{A} = \begin{pmatrix} 2 & 1 \\ 3 & 4 \end{pmatrix}$、$\bm{b} = \begin{pmatrix} 5 \\ 11 \end{pmatrix}$ です。

$$ \det(\bm{A}) = 2 \times 4 – 1 \times 3 = 5 $$

$\bm{A}_1$(第1列を $\bm{b}$ で置換):

$$ \det(\bm{A}_1) = \det\begin{pmatrix} 5 & 1 \\ 11 & 4 \end{pmatrix} = 20 – 11 = 9 $$

$\bm{A}_2$(第2列を $\bm{b}$ で置換):

$$ \det(\bm{A}_2) = \det\begin{pmatrix} 2 & 5 \\ 3 & 11 \end{pmatrix} = 22 – 15 = 7 $$

したがって

$$ x = \frac{9}{5} = 1.8, \quad y = \frac{7}{5} = 1.4 $$

検算: $2 \times 1.8 + 1.4 = 5$(OK)、$3 \times 1.8 + 4 \times 1.4 = 5.4 + 5.6 = 11$(OK)

クラメルの公式は解の構造を理論的に理解するのに有用ですが、計算コストが高い($O(n \cdot n!)$ )ため、実用的にはLU分解($O(n^3)$)やガウス消去法を使います。

理論を一通り学んだところで、Pythonで可視化してみましょう。

Pythonでの実装と可視化

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection

fig, axes = plt.subplots(1, 3, figsize=(16, 5))

# (a) 行列式の幾何学的意味
ax = axes[0]

# 単位正方形
unit_square = np.array([[0, 0], [1, 0], [1, 1], [0, 1]])
poly1 = Polygon(unit_square, alpha=0.3, facecolor='blue', edgecolor='blue', linewidth=2)
ax.add_patch(poly1)

# 行列による変換
A = np.array([[2, 1], [0.5, 1.5]])
det_A = np.linalg.det(A)
transformed = (A @ unit_square.T).T
poly2 = Polygon(transformed, alpha=0.3, facecolor='red', edgecolor='red', linewidth=2)
ax.add_patch(poly2)

ax.text(0.5, 0.5, 'Area=1', ha='center', va='center', fontsize=11, color='blue')
ax.text(np.mean(transformed[:,0]), np.mean(transformed[:,1]),
        f'Area={abs(det_A):.2f}', ha='center', va='center', fontsize=11, color='red')

ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.set_title(f'det(A) = {det_A:.2f} (area scaling)', fontsize=12)
ax.set_aspect('equal')
ax.grid(True, alpha=0.3)
ax.set_xlim(-0.5, 4)
ax.set_ylim(-0.5, 3)

# (b) det = 0 の場合(縮退)
ax = axes[1]
poly1b = Polygon(unit_square, alpha=0.3, facecolor='blue', edgecolor='blue', linewidth=2)
ax.add_patch(poly1b)

A_singular = np.array([[2, 1], [4, 2]])  # det = 0
transformed_s = (A_singular @ unit_square.T).T
ax.plot(transformed_s[:, 0], transformed_s[:, 1], 'r-', linewidth=3,
        label='Collapsed to line')
ax.plot(transformed_s[0, 0], transformed_s[0, 1], 'ro', markersize=8)

ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.set_title('det(A) = 0 (dimension collapse)', fontsize=12)
ax.set_aspect('equal')
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
ax.set_xlim(-0.5, 5)
ax.set_ylim(-0.5, 5)

# (c) 行列式の符号と向き
ax = axes[2]
A_pos = np.array([[1, 0.5], [0, 1]])  # det > 0
A_neg = np.array([[0.5, 1], [1, 0]])  # det < 0

for A_test, color, label in [(A_pos, 'green', f'det={np.linalg.det(A_pos):.1f}'),
                               (A_neg, 'orange', f'det={np.linalg.det(A_neg):.1f}')]:
    trans = (A_test @ unit_square.T).T
    poly = Polygon(trans, alpha=0.3, facecolor=color, edgecolor=color, linewidth=2)
    ax.add_patch(poly)
    # 矢印で向きを表示
    ax.annotate('', xy=trans[1], xytext=trans[0],
                arrowprops=dict(arrowstyle='->', color=color, lw=2))
    ax.text(np.mean(trans[:,0]), np.mean(trans[:,1]), label,
            ha='center', fontsize=10, color=color, fontweight='bold')

ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ax.set_title('Sign of determinant (orientation)', fontsize=12)
ax.set_aspect('equal')
ax.grid(True, alpha=0.3)
ax.set_xlim(-0.5, 2.5)
ax.set_ylim(-0.5, 2)

plt.tight_layout()
plt.savefig('determinant.png', dpi=150, bbox_inches='tight')
plt.show()

このグラフから、行列式の幾何学的意味が視覚的に確認できます。

  1. 左図(面積スケーリング): 青い単位正方形(面積1)が行列 $\bm{A} = \begin{pmatrix} 2 & 1 \\ 0.5 & 1.5 \end{pmatrix}$ によって赤い平行四辺形(面積 $|\det(\bm{A})| = |2 \times 1.5 – 1 \times 0.5| = 2.5$)に変換されています。面積が2.5倍に拡大されていることがグラフから視覚的に確認できます。

  2. 中央図(行列式ゼロ): $\bm{A} = \begin{pmatrix} 2 & 1 \\ 4 & 2 \end{pmatrix}$ は $\det(\bm{A}) = 4 – 4 = 0$ です。2行目が1行目の2倍であり、2つの列ベクトル $(2, 4)^T$ と $(1, 2)^T$ は同じ方向を向いています。そのため正方形が線分に潰れ、2次元が1次元に縮退しています。これが「行列式ゼロ ⟺ 行列が正則でない」という対応の幾何学的な意味です。

  3. 右図(符号と向き): 正の行列式(緑、$\det = 1$)は向きを保存し、負の行列式(オレンジ、$\det = -0.5$)は向きを反転させています。向きの反転とは、平行四辺形の頂点をたどる回り方が時計回りと反時計回りで入れ替わることです。鏡に映した像を想像するとわかりやすいでしょう。

応用: ヤコビアンと重積分の変数変換

行列式の重要な応用として、重積分の変数変換があります。$\bm{r} = (x, y)$ から $\bm{u} = (u, v)$ への座標変換を考えると、面積要素の変換は

$$ dx\,dy = \left|\det\left(\frac{\partial(x, y)}{\partial(u, v)}\right)\right| du\,dv $$

ここで $\frac{\partial(x, y)}{\partial(u, v)}$ はヤコビ行列であり、その行列式(ヤコビアン)が座標変換における微小面積の拡大率を表します。

具体例として、極座標変換 $x = r\cos\theta$、$y = r\sin\theta$ を考えましょう。

$$ \frac{\partial(x, y)}{\partial(r, \theta)} = \begin{pmatrix} \cos\theta & -r\sin\theta \\ \sin\theta & r\cos\theta \end{pmatrix} $$

ヤコビアンは

$$ \det = r\cos^2\theta + r\sin^2\theta = r(\cos^2\theta + \sin^2\theta) = r $$

したがって $dx\,dy = r\,dr\,d\theta$ となります。これは極座標の面積要素としておなじみの結果です。ヤコビアンが $r$ であるということは、原点から遠いほど微小な角度変化に対応する面積が大きくなることを意味しています。

3次元の球座標変換 $x = r\sin\phi\cos\theta$、$y = r\sin\phi\sin\theta$、$z = r\cos\phi$ では、$3 \times 3$ のヤコビ行列の行列式は $r^2 \sin\phi$ であり、$dx\,dy\,dz = r^2 \sin\phi\,dr\,d\phi\,d\theta$ となります。

行列式の逆行列への応用

$n \times n$ 正則行列 $\bm{A}$ の逆行列は余因子行列を用いて

$$ \bm{A}^{-1} = \frac{1}{\det(\bm{A})} \text{adj}(\bm{A}) $$

と表されます。ここで $\text{adj}(\bm{A})$ は余因子行列の転置(随伴行列)です。$2 \times 2$ の場合

$$ \begin{pmatrix} a & b \\ c & d \end{pmatrix}^{-1} = \frac{1}{ad – bc} \begin{pmatrix} d & -b \\ -c & a \end{pmatrix} $$

数値例: $\bm{A} = \begin{pmatrix} 3 & 1 \\ 2 & 4 \end{pmatrix}$ の場合、$\det(\bm{A}) = 10$ より

$$ \bm{A}^{-1} = \frac{1}{10} \begin{pmatrix} 4 & -1 \\ -2 & 3 \end{pmatrix} = \begin{pmatrix} 0.4 & -0.1 \\ -0.2 & 0.3 \end{pmatrix} $$

検算: $\bm{A}\bm{A}^{-1} = \begin{pmatrix} 3 \times 0.4 + 1 \times (-0.2) & 3 \times (-0.1) + 1 \times 0.3 \\ 2 \times 0.4 + 4 \times (-0.2) & 2 \times (-0.1) + 4 \times 0.3 \end{pmatrix} = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}$

単位行列が得られ、正しいことが確認できました。この公式は $\det(\bm{A}) = 0$ のとき分母がゼロになるため、逆行列が存在しないことも自然に表現しています。

まとめ

本記事では、行列式の定義・計算方法・幾何学的意味について、直感的な説明から厳密な定義、具体的な数値計算例まで一貫して解説しました。

  • 行列式は行列による線形変換の面積・体積のスケーリング因子
  • $\det(\bm{A}) > 0$: 向き保存、$\det(\bm{A}) < 0$: 向き反転、$\det(\bm{A}) = 0$: 次元が潰れる
  • 置換による定義は $\sum_{\sigma \in S_n} \text{sgn}(\sigma) \prod a_{i,\sigma(i)}$ であり、$2 \times 2$ や $3 \times 3$ の公式の一般化
  • 余因子展開で再帰的に計算($O(n!)$)、行基本変形で上三角化して計算($O(n^3)$)
  • 乗法性 $\det(\bm{AB}) = \det(\bm{A})\det(\bm{B})$ は面積変化率の積という直感と一致
  • 固有値の積が行列式: $\det(\bm{A}) = \prod \lambda_i$、特性多項式の定数項から導かれる
  • クラメルの公式は理論的に重要だが、実用的にはLU分解を使う
  • ヤコビアンは座標変換における行列式の応用であり、重積分に不可欠

次のステップとして、以下の記事も参考にしてください。