スプレッドシートで行列式を手計算しようとすると、2×2行列でも面倒ですよね。3×3以上になると計算ミスも起きやすくなります。
MDETERM関数を使えば、正方行列の行列式をワンクリックで求められます。行列式が0かどうかで逆行列の有無や連立方程式の解の存在も判定できますよ。
この記事では、スプレッドシートのMDETERM関数の基本から実践的な活用例まで解説します。
スプレッドシートのMDETERM関数とは?
MDETERM関数は、正方行列(行数と列数が等しい行列)の行列式(determinant)を返す関数です。
読み方は「マトリックス ディターミナント」です。「Matrix」は行列、「Determinant」は行列式を意味します。
行列式は1つの数値で表されるスカラー値です。行列が「逆行列を持つかどうか」を判定する指標として使われます。行列式が0でなければ逆行列が存在し、0なら存在しません。
数学や統計の計算で登場することが多い関数ですが、使い方自体はシンプルです。セル範囲を指定するだけで結果が返ってきますよ。
MDETERM関数の書き方
基本構文
=MDETERM(正方行列)
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 正方行列 | 必須 | 行列式を計算する、行数と列数が等しい配列またはセル範囲 |
引数は1つだけなので、覚えやすいですね。
セル範囲(例: A1:B2)のほか、配列定数(例: {1,2;3,4})も指定できます。配列定数では、カンマが列区切り、セミコロンが行区切りです。
MDETERM関数の基本的な使い方
2×2行列の行列式を求める
まずは最もシンプルな2×2行列から試してみましょう。
セルA1:B2に以下のデータが入っているとします。
| A | B | |
|---|---|---|
| 1 | 3 | 6 |
| 2 | 1 | 1 |
任意のセルに次の数式を入力します。
=MDETERM(A1:B2)
結果は -3 になります。
これは手計算でも確認できます。2×2行列の行列式は「ad – bc」の公式で求められます。
3 × 1 - 6 × 1 = 3 - 6 = -3
関数の結果と一致しましたね。
配列定数を使って直接入力する方法もあります。
=MDETERM({3,6;1,1})
こちらも同じく -3 が返ります。
3×3行列の行列式を求める
次に3×3行列の例を見てみましょう。
セルA1:C3に以下のデータが入っているとします。
| A | B | C | |
|---|---|---|---|
| 1 | 3 | 6 | 1 |
| 2 | 1 | 1 | 0 |
| 3 | 3 | 10 | 2 |
=MDETERM(A1:C3)
結果は 1 になります。
3×3行列の行列式は「サラスの公式」で手計算できます。展開すると次のようになります。
3×(1×2 - 0×10) - 6×(1×2 - 0×3) + 1×(1×10 - 1×3)
= 3×(2 - 0) - 6×(2 - 0) + 1×(10 - 3)
= 6 - 12 + 7
= 1
手計算だと途中で符号を間違えやすいので、MDETERM関数に任せるのが安心です。
実践的な使い方・応用例
行列式が0かどうかで逆行列の存在を判定する
行列式が0の行列は「特異行列」と呼ばれます。特異行列には逆行列が存在しません。
たとえば、以下のような行列を考えてみましょう。
| A | B | |
|---|---|---|
| 1 | 2 | 4 |
| 2 | 1 | 2 |
=MDETERM(A1:B2)
結果は 0 になります(2×2 – 4×1 = 0)。
2行目が1行目のちょうど半分になっていますよね。このように行同士が比例関係にある行列は特異行列です。
逆行列が必要な計算の前に、MDETERM関数で行列式を確認しておくとエラーを未然に防げますよ。
連立方程式の解の存在を判定する
連立方程式は、係数を行列にまとめることで解の存在を判定できます。
たとえば、次の連立方程式を考えます。
2x + 3y = 8
4x + 6y = 16
係数行列は次のとおりです。
| A | B | |
|---|---|---|
| 1 | 2 | 3 |
| 2 | 4 | 6 |
=MDETERM(A1:B2)
結果は 0 です(2×6 – 3×4 = 0)。
行列式が0ということは、この連立方程式には「一意の解が存在しない」ことを意味します。実際に2つ目の式は1つ目の式の2倍なので、独立した情報を持っていません。
IF関数と組み合わせれば、判定を自動化できます。
=IF(MDETERM(A1:B2)=0, "一意の解なし", "一意の解あり")
MDETERM関数とMINVERSE関数を組み合わせる
逆行列を求めるMINVERSE関数は、行列式が0だと #NUM! エラーになります。事前にMDETERM関数でチェックしておくと安全です。
=IF(MDETERM(A1:C3)<>0, MINVERSE(A1:C3), "逆行列なし")
行列式が0でなければ逆行列を計算し、0ならメッセージを表示します。
NOTE
MDETERM関数の計算精度は約16桁です。理論上は0になる行列式でも、1E-16程度の微小な値が返ることがあります。厳密に判定したい場合は
=ROUND(MDETERM(A1:C3), 10)=0のように丸めてから比較してみてください。
よくあるエラーと対処法
#VALUE! エラー
#VALUE! エラーが出る原因は主に2つあります。
原因1: 正方行列でない
行数と列数が異なるセル範囲を指定するとエラーになります。
=MDETERM(A1:C2) → #VALUE!(2行3列は正方行列でない)
指定するセル範囲が正方形(2×2、3×3、4×4 など)になっているか確認してください。
原因2: 数値以外のセルが含まれている
セル範囲に空白セルや文字列が含まれている場合もエラーになります。
=MDETERM(A1:B2) → #VALUE!(A2が空白の場合)
すべてのセルに数値が入力されているかチェックしましょう。空白セルがある場合は0を入力すれば解決します。
| エラー | 主な原因 | 対処法 |
|---|---|---|
#VALUE! | 行数と列数が不一致 | 正方行列(N×N)のセル範囲を指定する |
#VALUE! | 空白・文字列を含む | すべてのセルに数値を入力する |
関連する行列関数との使い分け
スプレッドシートには、MDETERM関数以外にも行列計算に使える関数があります。
| 関数 | 機能 | 用途 |
|---|---|---|
| MDETERM | 行列式を返す | 逆行列の存在判定、連立方程式の解の判定 |
| MINVERSE | 逆行列を返す | 連立方程式を解く、変換行列の逆変換 |
| MMULT | 行列の積を返す | 座標変換、重み付き合計の一括計算 |
| TRANSPOSE | 行と列を入れ替える | 表の縦横変換、データ整形 |
行列計算の基本的な流れは、まずMDETERM関数で行列式を確認します。0でなければMINVERSE関数で逆行列を求めましょう。
まとめ
MDETERM関数は、正方行列の行列式を求める関数です。
- 構文は
=MDETERM(正方行列)で、引数は1つだけ - 2×2行列なら「ad – bc」、3×3以上はサラスの公式で計算される
- 行列式が0 → 特異行列(逆行列が存在しない)
- 連立方程式の解の存在判定にも活用できる
#VALUE!エラーは正方行列でない、または数値以外のセルが原因
数学的な関数ではありますが、使い方自体はセル範囲を指定するだけなので難しくありません。逆行列や連立方程式を扱う場面で、ぜひ活用してみてください。
