3×3行列式 計算ツール|サラスの公式・余因子展開で瞬時算出、正則/特異判定つき
3×3行列の行列式(determinant, det A)を、9要素の入力から瞬時に計算します。サラスの公式(Sarrus rule)、余因子展開(cofactor expansion)、逆行列の存在判定(正則/特異)、平行六面体の体積解釈まで対応。日本の高等学校学習指導要領・大学入試センター・大学の線形代数講義で扱われる基本演算を、日本数学会・Wolfram MathWorld・OEIS等の公的資料に基づいて解説します。連立一次方程式のクラメル公式、固有値問題の特性方程式、Jacobian行列の可逆性判定など応用場面も網羅。
3×3行列式 計算機
3×3行列式の定義
3×3実行列 A に対して、行列式 det A(または |A|)は、次の6項の符号付き和として定義される実数(または複素数)です。
|A| = a₁₁(a₂₂a₃₃ − a₂₃a₃₂) − a₁₂(a₂₁a₃₃ − a₂₃a₃₁) + a₁₃(a₂₁a₃₂ − a₂₂a₃₁)
この式は、対称群 S₃ の6個の置換(偶置換3・奇置換3)に対するライプニッツの明示式そのものであり、n=3 の場合の書き下しに当たります。n次一般では n! 項の符号付き和になります(n=4 なら 24 項、n=5 なら 120 項)。
|A| = 0 の行列を特異行列(singular matrix)、|A| ≠ 0 の行列を正則行列(regular / non-singular matrix)と呼び、正則である場合に限り逆行列 A⁻¹ が存在します。日本の高等学校学習指導要領では2015年以降「行列」自体は数学C(旧)から削除されていますが、大学初年次の線形代数、大学入試共通テストの発展問題、情報処理推進機構(IPA)の基本情報技術者試験でも継続的に扱われる基礎概念です。
サラスの公式(Sarrus rule)
サラスの公式は、3×3限定の視覚的な計算アルゴリズムです。行列の右側に第1・2列をコピーして5列並べ、左上→右下の3本の対角線の積を +、右上→左下の3本の反対角線の積を − として合計します。
|A| = (a₁₁a₂₂a₃₃ + a₁₂a₂₃a₃₁ + a₁₃a₂₁a₃₂) − (a₁₃a₂₂a₃₁ + a₁₁a₂₃a₃₂ + a₁₂a₂₁a₃₃)
3×3限定であり、4×4以上では成立しません(誤った教科書記述に注意)。Pierre Frédéric Sarrus(1798-1861、仏)による19世紀の記法で、日本の高校・大学初年次でも入門教材として広く使われています。
展開項の対応表
| 項 | 符号 | 成分の積 | 置換 |
|---|---|---|---|
| 1 | + | a₁₁ a₂₂ a₃₃ | 恒等(偶) |
| 2 | + | a₁₂ a₂₃ a₃₁ | (123)(偶) |
| 3 | + | a₁₃ a₂₁ a₃₂ | (132)(偶) |
| 4 | − | a₁₃ a₂₂ a₃₁ | (13)(奇) |
| 5 | − | a₁₁ a₂₃ a₃₂ | (23)(奇) |
| 6 | − | a₁₂ a₂₁ a₃₃ | (12)(奇) |
余因子展開(cofactor expansion / Laplace expansion)
いずれか1行(または1列)に沿って、2×2小行列式(minor)と符号 (−1)^(i+j) を掛けた総和として計算する方法です。任意の行/列で展開でき、結果は同じ値になります(Laplaceの公式)。
|A| = Σⱼ (−1)^(i+j) aᵢⱼ Mᵢⱼ (第i行展開)
ここで Mᵢⱼ は、行 i と列 j を除いた 2×2 小行列式です。
符号パターン(チェッカーボード)
| 列1 | 列2 | 列3 | |
|---|---|---|---|
| 行1 | + | − | + |
| 行2 | − | + | − |
| 行3 | + | − | + |
0成分の多い行/列を選ぶと計算量が最小化されます。4×4以上の一般 n 次の場合は、サラスは使えず、この余因子展開または後述のガウス消去/LU分解が標準手段になります。
行列式の基本性質(11項)
| 性質 | 内容 | 系(意味) |
|---|---|---|
| 単位行列 | |I| = 1 | 恒等変換は体積保存 |
| 転置不変 | |Aᵀ| = |A| | 行と列は対称的役割 |
| 行(列)入替 | 符号が反転 | 奇置換で符号反転 |
| 行(列)スカラー倍 | 1行を k 倍すると全体が k 倍 | |kA| = k³|A| (n=3) |
| 線形性 | 1行に対して線形 | 多重線形性 |
| 零行(列) | 0の行/列があれば |A|=0 | 特異 |
| 比例 | 2行(列)が比例なら |A|=0 | 特異 |
| 行(列)加減 | k倍を他の行に加えても|A|不変 | 掃き出し法の根拠 |
| 三角行列 | 上/下三角なら対角積 | LU分解で利用 |
| 積 | |AB| = |A||B| | 群準同型 GL(n,R)→R× |
| 逆行列 | |A⁻¹| = 1/|A| | 正則の必要十分 |
計算例27題(典型パターン)
大学入試・線形代数の演習で頻出する行列式の値を早見表にまとめます。ツールに数値を入力して検算に使ってください。
| # | 行列 | det | 備考 |
|---|---|---|---|
| 1 | 単位行列 I₃ | 1 | |I|=1 |
| 2 | [[1,2,3],[4,5,6],[7,8,10]] | −3 | 初期表示例 |
| 3 | [[1,2,3],[4,5,6],[7,8,9]] | 0 | 行が線形従属 |
| 4 | [[2,0,0],[0,3,0],[0,0,4]] | 24 | 対角積 2·3·4 |
| 5 | [[1,1,1],[1,2,3],[1,4,9]] | 2 | Vandermonde(1,2,3) |
| 6 | [[1,1,1],[1,2,4],[1,3,9]] | 2 | Vandermonde(1,2,3) |
| 7 | [[0,1,2],[1,0,3],[2,3,0]] | 12 | 対称行列 |
| 8 | [[1,0,0],[0,cosθ,−sinθ],[0,sinθ,cosθ]] | 1 | x軸回転(直交) |
| 9 | [[cosθ,−sinθ,0],[sinθ,cosθ,0],[0,0,1]] | 1 | z軸回転(直交) |
| 10 | [[−1,0,0],[0,1,0],[0,0,1]] | −1 | 鏡映(向き反転) |
| 11 | [[2,1,0],[1,2,1],[0,1,2]] | 4 | 3項対角 |
| 12 | [[1,2,3],[0,1,4],[5,6,0]] | 1 | 入試典型 |
| 13 | [[3,1,1],[1,3,1],[1,1,3]] | 20 | 循環対称 |
| 14 | [[a,b,c],[b,c,a],[c,a,b]] | 3abc−a³−b³−c³ | 循環公式 |
| 15 | [[1,x,x²],[1,y,y²],[1,z,z²]] | (y−x)(z−x)(z−y) | Vandermonde |
| 16 | [[0,1,0],[0,0,1],[1,0,0]] | 1 | 循環置換(偶) |
| 17 | [[0,0,1],[1,0,0],[0,1,0]] | 1 | 循環置換(偶) |
| 18 | [[0,1,0],[1,0,0],[0,0,1]] | −1 | 互換(奇) |
| 19 | [[1,0,0],[0,1,0],[a,b,1]] | 1 | 剪断変換 |
| 20 | [[2,2,2],[3,3,3],[4,5,6]] | 0 | 1行と2行が比例 |
| 21 | [[1,4,7],[2,5,8],[3,6,10]] | −3 | #2の転置(値同) |
| 22 | [[1,2,3],[2,4,6],[7,8,10]] | 0 | 1行×2=2行 |
| 23 | [[10,20,30],[4,5,6],[7,8,10]] | −30 | #2の1行×10=−30 |
| 24 | [[1,0,0],[0,2,0],[0,0,3]] | 6 | 対角 |
| 25 | [[1,2,0],[0,1,2],[2,0,1]] | 9 | 疎行列 |
| 26 | [[5,0,0],[0,5,0],[0,0,5]] | 125 | 5³=125 |
| 27 | [[1,1,0],[0,1,1],[1,0,1]] | 2 | 0-1行列 |
特に Vandermonde行列(#5, #6, #15)は補間・多項式回帰の基礎で、循環行列(#14, #16, #17)は離散フーリエ変換の固有値解析に、三項対角行列(#11)は差分方程式の解法に登場します。整数の行列については、OEIS(オンライン整数列大辞典)で det の並びを検索できます。
幾何的意味・体積解釈
3×3行列 A の行(または列)を3つの3次元ベクトル a, b, c と見ると、|det A| はa, b, c を辺とする平行六面体の体積に等しくなります。符号は「右手系(正)」「左手系(負)」の向きを表します。
幾何的な帰結
体積 = |det A|
3ベクトル a, b, c の混合積 (a×b)·c と等しく、平行六面体の体積の絶対値。|det A|=0 は3ベクトルが同一平面上(共面)にあることを意味します。
向き(chirality)= sign(det A)
正なら右手系、負なら左手系。ロボティクスの回転行列は必ず det = +1(SO(3))で、−1 になると鏡映が混入している合図です。
体積スケーリング
線形変換 x ↦ Ax によって R³ の任意領域 D の体積は |det A| 倍になります。Jacobian変換公式 ∫∫∫ f(Ax) dV = ∫∫∫ f(y) |det A|⁻¹ dV の根拠。
可逆性の判定
det A ≠ 0 ⇔ A が正則 ⇔ 逆行列 A⁻¹ が存在 ⇔ Ax = 0 の解が x = 0 のみ ⇔ 列/行ベクトルが線形独立、が同値です。
応用場面(クラメル・固有値ほか)
連立方程式のクラメル公式
3元1次連立 Ax = b の解を xᵢ = det(Aᵢ) / det(A) で表す方法。Aᵢ は A の i 列目を b で置換したもの。det A = 0 なら解なし or 不定。理論的美しさに反し、n が大きいと計算量は O(n·n!) で非現実的なため、実用ではLU分解が主流。
固有値問題の特性方程式
det(A − λI) = 0 は3次多項式で、根が固有値。ヤコビ法・QRアルゴリズムの理論的基礎。固有値2×2で2次版を確認できます。物理では応力テンソル・慣性モーメントの主軸決定に利用。
3次元回転行列の検証
ロボットアーム・ゲーム開発・CADで使う3×3回転行列は SO(3) の元、すなわち直交かつ det = +1 が必須条件。det = −1 の場合は左右反転(鏡映)が混入した「不適切な回転」で、姿勢推定の実装バグの発見に有用。
Jacobian行列の可逆性
多変数関数 f:R³→R³ の逆関数定理は、点 p での Jacobian J(f)(p) が |det J| ≠ 0 であれば局所的に可逆であることを保証。極座標→直交座標などの座標変換で頻用。
ベクトルの共面判定
3本のベクトルが同一平面上か否かは、それらを行に並べた3×3行列の det = 0 で判定。3Dグラフィックスの衝突判定、地図の三角測量、コンピュータビジョンでも登場。
連立方程式の解の存在
Ax = b の一意解の存在は det A ≠ 0 が必要十分。det A = 0 で b ∈ Im A なら無限解、b ∉ Im A なら解なし(RankとImageの階数定理により階数比較)。
手計算の効率的な手順
行列式は手計算でも十分求まりますが、以下の順で進めると計算ミスが激減します。
手順1:0成分の多い行/列を探す
余因子展開する際、係数 aᵢⱼ が 0 の項は自動的に消えます。0が多い行・列を選んで展開すれば、計算する2×2小行列式が2個 or 1個で済みます。
手順2:基本変形で0を増やす
「ある行に他の行の k 倍を加える」変形は det を変えません(性質8)。この操作で0を意図的に作り出すと、余因子展開が劇的に簡単になります。
手順3:三角行列にする(上三角化)
基本変形で上三角行列に変形できれば、det = 対角成分の積で即座に求まります。これが実質的にガウス消去法・LU分解の考え方で、n=3 の手計算にも極めて有効です。
手順4:サラスで検算
展開・変形で求めた値を、最後にサラスの公式で直接計算し比較。桁数を意識しないと符号ミスが混入しやすいため、二重チェックが望ましいです。
よくある間違い・注意点
- サラスを4×4以上に適用する — 学生が最も陥る誤りです。サラスの公式は n=3 限定。4×4以上では正しい値になりません。n=4 は 24 項で、余因子展開かガウス消去法を使うべきです。
- 余因子展開の符号を +1, −1, +1... と機械的に付ける — 正しくは (−1)^(i+j) の市松模様。第2行展開なら符号は −+− なので、第2行第1列に付く符号は「マイナス」です。
- スカラー倍を全体に掛ける — |kA| = k|A| は 1×1 の場合のみ。3×3 では |kA| = k³|A| です。各行1つずつ k を吸い出すため n 次では k^n 倍になります。
- 転置で符号が変わると誤解 — |Aᵀ| = |A| で符号は変わりません。行と列を入れ替えても値は同じです。「行の入替で符号反転」は2つの行を入れ替えた場合の話。
- det=0 なら解が0個と思い込む — 正しくは「一意解が存在しない」。実際は「解が0個(不能)」または「無限個(不定)」の2択で、拡大係数行列の階数(rank)で判別します。
- 行列積の順序に注意しない — |AB| = |BA| は成り立ちますが、AB ≠ BA(積は非可換)。「行列式は入れ替え可、行列本体は不可」を混同しないこと。
- 浮動小数点で det が「ほぼ0」と出て正則と判定 — 数値計算では条件数(condition number)や特異値分解(SVD)で判定するのが正しく、|det A| < 1e−10 で特異と早期判定するのは実務向き簡易ルール。
学習指導要領・入試との対応
日本の高等学校学習指導要領(平成30年告示、令和4年度施行)では、行列は「数学C」の選択単元から除外されており、高校段階の必修範囲ではありません。ただし以下の場面で登場します。
- 大学入試(2次個別) ― 東大・京大・東工大・名工大等の理工系で、線形代数の基本問題として2×2、3×3の行列式が扱われる例があります。
- 大学初年次「線形代数」 ― 理工系必修。多くの標準教科書(斎藤『線型代数入門』、川久保『線形代数学』等)で3×3例題が扱われます。
- 基本情報技術者試験・応用情報技術者試験(IPA) ― コンピュータ科学基礎で行列式が出題されうる範囲。
- 日本数学オリンピック本選・国際数学オリンピック(IMO) ― 対称式・Vandermonde行列式の技法が問題解法に登場することがあります(IPHO物理では3D慣性テンソルにも)。
参考文献・公的資料
3×3行列式・線形代数の学習および応用実装のため、以下の公的機関・学会の資料を参照してください。
- 文部科学省 高等学校学習指導要領(平成30年告示) ― 数学I〜IIIおよび数学A/B/Cの公式指導要領。行列の位置づけを確認できます。
- 日本数学会 ― 数学関連の学会公式。線形代数分野の日本語標準用語の基準。
- 大学入試センター(DNC) ― 共通テストの出題範囲・過去問公式ページ。数学C出題範囲に関する情報。
- OEIS(オンライン整数列大辞典) ― 3×3整数行列の det の並びなど、数論的整数列を検索できるデータベース。
- Wolfram MathWorld ― Determinant ― 行列式に関する英語圏の総合リファレンス。ライプニッツ式・余因子展開の厳密定義。
- American Mathematical Society (AMS) ― アメリカ数学会。線形代数の学術論文・教科書のリファレンス。
- 情報処理推進機構 IPA 情報処理技術者試験 ― 基本情報・応用情報の出題範囲。線形代数の実務応用。
- NIST SP 811 - Guide for the Use of the International System of Units ― 米国国立標準技術研究所の単位・記号の国際基準。数学記法の一次資料。
- 日本情報オリンピック(JOI) ― 情報オリンピックの公式ページ。行列演算のアルゴリズム。
- 国立教育政策研究所 学習指導要領データベース ― 高等学校の各科目学習指導要領の一次資料。
よくある質問(FAQ)
det=0 は何を意味しますか?
行列 A が特異(singular)で、逆行列 A⁻¹ が存在しないことを意味します。同値に、行(または列)ベクトルが線形従属で、連立方程式 Ax = b の解が一意ではない(0個または無限個)ことを表します。幾何的には、3本のベクトルが同一平面(共面)にあり、平行六面体の体積が0であることに対応します。
サラスの公式は4×4以上でも使えますか?
使えません。サラスの公式は3×3限定です。4×4以上では、サラス風の対角積の加減では正しい行列式値になりません(n=4は24項、うち偶置換12・奇置換12の符号付き和が必要)。n≥4では余因子展開かガウス消去法/LU分解を使ってください。
対角行列の行列式は?
対角成分の積です。三角行列(上三角・下三角)も同様に対角成分の積で求まります。この性質を利用して、実務では基本変形で上三角化してから対角積を取るガウス消去法/LU分解が計算量 O(n³) の標準アルゴリズムとして使われます。
クラメルの公式で3元連立方程式を解けますか?
解けます。Ax = b の解 xᵢ は、xᵢ = det(Aᵢ) / det(A) で表せます。Aᵢ は A の第 i 列を b で置換した行列。det A ≠ 0 の場合のみ有効で、n=3 なら手計算で十分実用的。ただし n が大きい場合は O(n·n!) の計算量となり非現実的で、実用ではLU分解を使います。
行列式が負になることはありますか?
あります。行または列を1度入れ替えるだけで符号が反転します。幾何的には、正の行列式は「右手系(向きを保つ)」、負の行列式は「左手系(向きを反転する、鏡映を含む)」を意味します。3次元回転行列(SO(3))は常に det = +1、鏡映行列は det = −1 です。
|A + B| = |A| + |B| ですか?
一般には成り立ちません。行列式は「多重線形」(1行ずつ入れ替えれば線形)ですが、行列全体の加法に対して線形ではありません。よくある間違いなので注意。例:A=B=I₃ なら |A|+|B|=2 ですが |A+B|=|2I|=8 です。
|AB| と |BA| は等しいですか?
正方行列 A, B が同サイズなら等しいです。|AB| = |A||B| = |B||A| = |BA|。ただし積そのものは AB ≠ BA(非可換)なので、「行列式は入替可・行列本体は入替不可」の区別が重要です。
ゼロ行列(全成分0)の行列式は?
0 です。全成分0の場合、どの行も列も0であり、性質「零行(列)を持つ行列の det は0」から即座に 0 が確定します。当然、特異行列で逆行列は存在しません。
Vandermonde行列式は覚えるべきですか?
覚えると入試・演習で強力な武器になります。3×3のVandermondeは |1 x x²; 1 y y²; 1 z z²| = (y−x)(z−x)(z−y) で、対称的な因数分解で瞬時に求まります。多項式補間・回帰分析でも登場する基礎公式で、日本数学オリンピックや大学入試の対称式問題で頻用されます。
行列式の値が非常に大きくなる場合の計算精度は?
浮動小数点計算では桁落ちに注意が必要です。特に条件数の大きい行列では、サラスの直接計算やライプニッツ展開は精度が悪化します。実用ではLU分解の対角成分の対数和 log|det A| = Σ log|Uᵢᵢ| として計算するのが数値安定です。NIST・IEEE 754の浮動小数点仕様も参考にしてください。
3×3の逆行列はどうやって求めますか?
A⁻¹ = (1/det A) × adj(A) の公式で求まります。adj(A) は余因子行列の転置(随伴行列)で、3×3では9個の2×2小行列式を計算します。det A = 0 なら逆行列は存在しません。実用ではガウス・ジョルダン消去法や LU分解 + 前進/後退代入の方が高速です。
Excel・Google スプレッドシートで行列式を計算できますか?
できます。Excel・Google スプレッドシートともに =MDETERM(range) 関数で行列式を求められます。例えば A1:C3 に3×3行列があれば =MDETERM(A1:C3)。Python NumPy では numpy.linalg.det(A)、Mathematica では Det[A]、MATLAB では det(A) です。