スプレッドシートのMINVERSE関数の使い方|逆行列

スポンサーリンク

スプレッドシートで逆行列を手計算するのは大変ですよね。2×2行列でも4つの要素を入れ替えたり符号を変えたりと手間がかかります。3×3以上になると、計算ミスのリスクもぐっと高まります。

MINVERSE関数を使えば、正方行列の逆行列をセル範囲の指定だけで求められます。MMULT関数と組み合わせれば、連立方程式を解くこともできますよ。

この記事では、スプレッドシートのMINVERSE関数の基本から、連立方程式の解法まで解説します。

スプレッドシートのMINVERSE関数とは?

MINVERSE関数は、正方行列(行数と列数が等しい行列)の逆行列(inverse matrix)を返す関数です。

読み方は「マトリックス インバース」です。「Matrix」は行列、「Inverse」は逆を意味します。

逆行列とは、元の行列にかけると単位行列(対角線が1、それ以外が0の行列)になる行列のことです。数学的には A × A⁻¹ = I(単位行列)という関係が成り立ちます。

行列計算に使う関数ではありますが、使い方自体はシンプルです。セル範囲を指定するだけで結果が返ってきますよ。

MINVERSE関数の書き方

基本構文

=MINVERSE(正方行列)

引数の説明

引数必須/省略可説明
正方行列必須逆行列を求める、行数と列数が等しい配列またはセル範囲

引数は1つだけなので、覚えやすいですね。

セル範囲(例: A1:B2)のほか、配列定数(例: {1,2;3,4})も指定できます。配列定数では、カンマが列区切り、セミコロンが行区切りです。

MINVERSE関数は結果を配列(N×N行列)として返します。Googleスプレッドシートでは、出力先のセル範囲に自動的に展開されますよ。

MINVERSE関数の基本的な使い方

2×2行列の逆行列を求める

まずは最もシンプルな2×2行列から試してみましょう。

セルA1:B2に以下のデータが入っているとします。

 AB
147
226

任意のセル(例: D1)に次の数式を入力します。

=MINVERSE(A1:B2)

D1:E2に以下の逆行列が表示されます。

 DE
10.6-0.7
2-0.20.4

2×2行列の逆行列は手計算でも確認できます。行列式 ad - bc を分母にして、要素を入れ替える公式を使います。

行列式 = 4×6 - 7×2 = 24 - 14 = 10

逆行列 = (1/10) × [[6, -7], [-2, 4]]
       = [[0.6, -0.7], [-0.2, 0.4]]

関数の結果と一致しましたね。

配列定数を使って直接入力する方法もあります。

=MINVERSE({4,7;2,6})

こちらも同じ結果が返ります。

3×3行列の逆行列を求める

次に3×3行列の例を見てみましょう。

セルA1:C3に以下のデータが入っているとします。

 ABC
1361
2110
33102
=MINVERSE(A1:C3)

結果は以下の3×3行列になります。

 DEF
12-2-1
2-231
37-12-3

この行列の行列式はMDETERM関数で確認すると 1 です。行列式が0以外なので、逆行列が存在します。

3×3以上の逆行列を手計算で求めるのはかなり手間がかかります。MINVERSE関数に任せるのが安心ですよ。

実践的な使い方・応用例

MDETERM関数で特異行列かどうか事前チェックする

逆行列が存在しない行列を「特異行列」と呼びます。特異行列にMINVERSE関数を使うと #NUM! エラーになります。

事前にMDETERM関数で行列式を確認しておくと、エラーを未然に防げますよ。

たとえば、以下のような行列を考えてみましょう。

 AB
124
212

この行列の行列式は 2×2 – 4×1 = 0 です。2行目が1行目のちょうど半分なので、特異行列ですね。

IF関数と組み合わせれば、安全に逆行列を求められます。

=IF(MDETERM(A1:B2)<>0, MINVERSE(A1:B2), "逆行列なし")

行列式が0でなければ逆行列を計算し、0なら「逆行列なし」と表示します。

MMULT関数と組み合わせて連立方程式を解く

MINVERSE関数の実践的な活用例として、連立方程式の解法があります。

連立方程式は行列で表すと Ax = b の形になります。両辺に A の逆行列をかけると x = A⁻¹b で解が求まります。

次の連立方程式を解いてみましょう。

3x + 6y + z = 11
 x +  y     = 2
3x + 10y + 2z = 17

まず、係数行列AをセルA1:C3に、定数ベクトルbをセルE1:E3に入力します。

係数行列A

 ABC
1361
2110
33102

定数ベクトルb

 E
111
22
317

任意のセル(例: G1)に次の数式を入力します。

=MMULT(MINVERSE(A1:C3), E1:E3)

MMULT関数は行列の積を計算する関数です。MINVERSE関数で逆行列を求め、それと定数ベクトルの積を計算することで、解が得られます。

結果は以下のとおりです。

 G
11
21
32

つまり x=1, y=1, z=2 が解です。

検算してみましょう。1つ目の式に代入すると 3×1 + 6×1 + 1×2 = 11 で正しいですね。

TIP

連立方程式を解く前に、MDETERM関数で係数行列の行列式が0でないことを確認しましょう。行列式が0の場合、一意の解は存在しません。

よくあるエラーと対処法

#NUM! エラー

#NUM! エラーは、行列式が0の行列(特異行列)を指定した場合に発生します。

=MINVERSE({2,4;1,2})  → #NUM!

MDETERM関数で行列式を確認し、0でない行列に対してのみ使用してください。

#VALUE! エラー

#VALUE! エラーが出る原因は主に2つあります。

原因1: 正方行列でない

行数と列数が異なるセル範囲を指定するとエラーになります。

=MINVERSE(A1:C2)  → #VALUE!(2行3列は正方行列でない)

指定するセル範囲が正方形(2×2、3×3など)になっているか確認してください。

原因2: 数値以外のセルが含まれている

セル範囲に空白セルや文字列が含まれている場合もエラーになります。すべてのセルに数値が入力されているかチェックしましょう。

エラー主な原因対処法
#NUM!行列式が0(特異行列)MDETERM関数で事前に行列式を確認する
#VALUE!行数と列数が不一致正方行列(N×N)のセル範囲を指定する
#VALUE!空白・文字列を含むすべてのセルに数値を入力する

関連する行列関数との使い分け

スプレッドシートには、MINVERSE関数以外にも行列計算に使える関数があります。

関数機能用途
MINVERSE逆行列を返す連立方程式を解く、変換行列の逆変換
MDETERM行列式を返す逆行列の存在判定、連立方程式の解の判定
MMULT行列の積を返す座標変換、重み付き合計の一括計算
TRANSPOSE行と列を入れ替える表の縦横変換、データ整形

行列計算の基本的な流れは、まずMDETERM関数で行列式を確認します。0でなければMINVERSE関数で逆行列を求めましょう。MMULT関数と組み合わせれば、連立方程式もスプレッドシート上で解けますよ。

まとめ

MINVERSE関数は、正方行列の逆行列を求める関数です。

  • 構文は =MINVERSE(正方行列) で、引数は1つだけ
  • 結果はN×N行列として自動展開される
  • 行列式が0の特異行列には #NUM! エラーが返る
  • MDETERM関数で事前に行列式を確認すると安全
  • MMULT関数と組み合わせれば、連立方程式の解も求められる

数学的な関数ではありますが、使い方自体はセル範囲を指定するだけなので難しくありません。連立方程式を解きたいときに、ぜひ活用してみてください。

タイトルとURLをコピーしました