行列のサイズ(2×2〜4×4)を選び、グリッドに成分を入力してください。逆行列は正方行列(行数=列数)でだけ考えられ、行列式が0でないときだけ存在します(0のときは「存在しない」と表示します)。
このページでできること
- 2×2・3×3・4×4の正方行列の逆行列 \(A^{-1}\) がその場で計算できます
- 行列式 \(\det(A)\) の値と、逆行列が存在するかどうか(正則かどうか)の判定もあわせて表示します
- 2×2は公式「\(A^{-1} = \dfrac{1}{ad-bc}\begin{pmatrix} d & -b \\ -c & a \end{pmatrix}\)」、3×3・4×4は余因子行列(随伴行列)方式の途中式つきです
- 式のやさしい解説・Excel/Googleスプレッドシート(MINVERSE)/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
この計算は何の役に立つ?
未知数と式の数が同じ連立一次方程式は、係数を並べた行列 \(A\) を使って \(A\boldsymbol{x} = \boldsymbol{b}\) と書けます。両辺に左から \(A^{-1}\) を掛けると \(\boldsymbol{x} = A^{-1}\boldsymbol{b}\) となります。つまり逆行列が求まれば、解が掛け算1回で出ます。
右辺 \(\boldsymbol{b}\) だけを取り替えて何度も解き直す場面(構造計算・電気回路の解析など)で特に威力を発揮します。逆行列が存在しない(行列式が0)ときは、解がただ1組に決まらないというサインです。
3DCGやゲーム、ロボットの制御では、回転・拡大縮小・移動といった変換を行列の掛け算で計算します。このとき「変換後の座標から変換前の座標に戻す」計算が逆行列です。
例えばカメラから見た座標と世界全体の座標を行き来する変換(ビュー行列)や、画面上でクリックした点が3D空間のどこに当たるかの逆算などで、逆行列は毎フレームのように使われています。
文字を数に置き換えて行列を掛けると、文章を暗号文に変換できます(ヒル暗号)。受け取った側は、鍵の行列の逆行列を掛けることで元の文章に戻せます。
「掛けたものは逆行列で戻せる」という性質そのものが暗号と復号のペアになっている、逆行列の考え方が一番素直に見える応用例です(実際には成分を26で割った余りで扱うため、鍵には逆行列がその世界で存在する行列を選ぶ、という条件がつきます)。
「自動車の生産が増えると、鉄鋼や電力の生産はどれだけ増えるか」といった産業同士の波及効果は、産業間の取引を行列 \(A\) にまとめ、\((E - A)^{-1}\)(レオンチェフ逆行列)を掛けて計算します。
国や都道府県が公共事業・観光イベントなどの経済効果を発表するときの標準的な手法で、逆行列が社会の意思決定を支えている代表例です。
広告費と売上のようなデータの関係に「一番当てはまる直線」を引く回帰分析(最小二乗法)では、解が \(\hat{\boldsymbol{\beta}} = (X^{\mathsf{T}}X)^{-1}X^{\mathsf{T}}\boldsymbol{y}\) という逆行列入りの式(正規方程式の解)で書けます。
統計学や機械学習の教科書に必ず登場する式で、AIがデータから傾向を学ぶ計算の出発点にも逆行列が座っています。
式
用語・記号の解説
記号
| \(A\) | エー | 行列につける名前。行列はアルファベットの大文字で表すのが慣例です。 |
| \(A^{-1}\) | エー・インバース エーの逆行列 | 行列 \(A\) の逆行列。右上の \(-1\) は「マイナス1乗」の書き方で、数の逆数 \(a^{-1} = \dfrac{1}{a}\) と同じ発想の記号です(ただし行列を \(\dfrac{1}{A}\) と分数には書きません)。 |
| \(E\) | イー 単位行列 | 単位行列。左上から右下への対角線の成分が1で、残りがすべて0の正方行列です。どんな行列に掛けても相手を変えない「数の1」の役割をします。海外では \(I\)(アイ)と書くことが多いです。 |
| \(\det(A),\ |A|\) | デット・エー エーの行列式 | 行列 \(A\) の行列式。この値が0でなければ逆行列が存在し、0なら存在しません。\(|A|\) という縦棒の書き方もよく使われます。 |
| \(\operatorname{adj}(A)\) | アジョイント・エー エーの余因子行列(随伴行列) | 行列 \(A\) の余因子行列(随伴行列)。各成分の余因子を並べて転置した行列で、英語の adjugate(アジュゲート。古い呼び名は adjoint=アジョイント)の頭3文字から adj と書きます。 |
| \(a_{ij}\) | エー・アイ・ジェー エーのアイジェー成分 | 行列 \(A\) の \(i\) 行 \(j\) 列の成分(上から \(i\) 行目・左から \(j\) 列目にある数)。右下の小さい文字(添え字)が「場所」を表します。 |
用語
| 逆行列 | ぎゃくぎょうれつ | 掛けると単位行列になる相手の行列。数の「逆数」の行列版で、\(A^{-1}\) と書きます。行列式が0でない正方行列にだけ存在し、連立一次方程式を解く・変換を元に戻すなどに使われます。 |
| 単位行列 | たんいぎょうれつ | 対角線(左上から右下)が1で、残りがすべて0の正方行列。どんな行列に掛けても相手を変えないので、数の「1」に当たります。 |
| 正方行列 | せいほうぎょうれつ | 行数と列数が同じ(正方形の形をした)行列。逆行列や行列式は正方行列でだけ考えます。 |
| 行列式 | ぎょうれつしき | 正方行列から決まる1つの数。\(\det(A) \neq 0\) なら逆行列が存在する、という判定に使えます。求め方は姉妹ページ「行列式の計算」で詳しく説明しています。 |
| 正則行列 | せいそくぎょうれつ | 行列式が0でない正方行列。正則な行列には逆行列が存在します。行列式が0の行列は特異行列(とくいぎょうれつ)と呼ばれ、逆行列がありません。 |
| 余因子 | よいんし | 行列から \(i\) 行目と \(j\) 列目を取り除いた小さい行列の行列式(小行列式)に、符号 \((-1)^{i+j}\) を掛けたもの。余因子行列の部品になります。 |
| 余因子行列 | よいんしぎょうれつ | 各場所の余因子を並べて、行と列を入れ替えた(転置した)行列。随伴行列(ずいはんぎょうれつ)とも呼ばれ、\(\operatorname{adj}(A)\) と書きます。行列式で割ると逆行列になります。なお進んだ教科書では「随伴行列」が別の行列(複素共役をとって転置した行列)の意味で使われることも多いので注意してください。 |
| 掃き出し法 | はきだしほう | 行列 \(A\) と単位行列 \(E\) を横に並べ、行の変形をくり返して左半分を \(E\) にすると、右半分が \(A^{-1}\) になる求め方。ガウス・ジョルダン法とも呼ばれ、大きい行列ではこちらが主流です。 |
| 線形代数 | せんけいだいすう | 行列やベクトルを扱う数学の分野。大学初年次の必修科目として学ぶことが多く、CG・統計・AIなど応用の土台になっています。 |
前提として理解しておくといいこと
このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
| 正負の数の四則計算(中学1年) |
|
| 逆数(中学1年) |
|
| 行列の基礎と掛け算(大学初年次の線形代数) |
|
| 行列式(大学初年次の線形代数) |
|
Excelで計算する方法
| 行列Aの1行目 | 4 | 7 |
| 行列Aの2行目 | 2 | 6 |
| 逆行列 A⁻¹ | =MINVERSE(B1:C2) |
| 行列Aの1行目 | 1 | 2 | 3 |
| 行列Aの2行目 | 0 | 1 | 4 |
| 行列Aの3行目 | 5 | 6 | 0 |
| 逆行列 A⁻¹ | =MINVERSE(B1:D3) |
1つ目の表は 1行目が 0.6 と -0.7、2行目が -0.2 と 0.4 になります。2つ目の表は 1行目が -24, 18, 5、2行目が 20, -15, -4、3行目が -5, 4, 1 になります。
行列式が0の行列(逆行列が存在しない行列)を渡すと、MINVERSEは #NUM! エラーになります。行列式そのものはMDETERM関数で確認できます。
Googleスプレッドシートで計算する方法
| 行列Aの1行目 | 4 | 7 |
| 行列Aの2行目 | 2 | 6 |
| 逆行列 A⁻¹ | =MINVERSE(B1:C2) |
| 行列Aの1行目 | 1 | 2 | 3 |
| 行列Aの2行目 | 0 | 1 | 4 |
| 行列Aの3行目 | 5 | 6 | 0 |
| 逆行列 A⁻¹ | =MINVERSE(B1:D3) |
1つ目の表は 1行目が 0.6 と -0.7、2行目が -0.2 と 0.4 に、2つ目の表は 1行目が -24, 18, 5、2行目が 20, -15, -4、3行目が -5, 4, 1 になります。
Pythonで計算する方法
from fractions import Fraction
A = [[4, 7], [2, 6]]
def determinant(matrix): # 行列式(1行目に沿った余因子展開で再帰的に計算する)
n = len(matrix)
if n == 1:
return matrix[0][0]
total = 0
for j in range(n):
minor = [row[:j] + row[j + 1:] for row in matrix[1:]] # 1行目とj列目を取り除いた小行列
total += (-1) ** j * matrix[0][j] * determinant(minor)
return total
def inverse(matrix): # 逆行列(余因子行列を行列式で割る方式)
n = len(matrix)
det = Fraction(determinant(matrix))
if det == 0:
return None # 行列式が0のとき、逆行列は存在しない
inverse_rows = []
for i in range(n):
row = []
for j in range(n):
# (i, j)成分 = j行目とi列目を取り除いた小行列式 × 符号 ÷ 行列式(転置込み)
minor = [r[:i] + r[i + 1:] for k, r in enumerate(matrix) if k != j]
row.append((-1) ** (i + j) * determinant(minor) / det)
inverse_rows.append(row)
return inverse_rows
inverse_matrix = inverse(A)
if inverse_matrix is None:
print("逆行列は存在しません(det(A) = 0)")
else:
for row in inverse_matrix:
print([float(x) for x in row])
数式記述言語(LaTeX等)での書き方(コピペ可)
AA⁻¹ = A⁻¹A = E
A A^{-1} = A^{-1} A = E
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>A</mi>
<msup><mi>A</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup>
<mo>=</mo>
<msup><mi>A</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup>
<mi>A</mi>
<mo>=</mo>
<mi>E</mi>
</mrow>
</math>
A A^-1 = A^-1 A = E
A . Inverse[A]
A . LinearAlgebra:-MatrixInverse(A);
E = A * inv(A);
AA^(-1) = A^(-1)A = E
A⁻¹ = 1/(ad − bc) × [d, −b; −c, a]
A^{-1} = \frac{1}{ad - bc} \begin{pmatrix} d & -b \\ -c & a \end{pmatrix}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msup><mi>A</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mrow><mi>a</mi><mi>d</mi><mo>-</mo><mi>b</mi><mi>c</mi></mrow>
</mfrac>
<mrow>
<mo>(</mo>
<mtable>
<mtr><mtd><mi>d</mi></mtd><mtd><mrow><mo>-</mo><mi>b</mi></mrow></mtd></mtr>
<mtr><mtd><mrow><mo>-</mo><mi>c</mi></mrow></mtd><mtd><mi>a</mi></mtd></mtr>
</mtable>
<mo>)</mo>
</mrow>
</mrow>
</math>
A^-1 = 1/(ad - bc) [[d, -b], [-c, a]]
Inverse[{{a, b}, {c, d}}]
LinearAlgebra:-MatrixInverse(Matrix([[a, b], [c, d]]));
B = inv(A);
A^(-1) = 1/(ad − bc) (■(d&−b@−c&a))
A⁻¹ = adj(A)/det(A)
A^{-1} = \frac{1}{\det(A)} \operatorname{adj}(A)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msup><mi>A</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup>
<mo>=</mo>
<mfrac>
<mn>1</mn>
<mrow><mi>det</mi><mo>⁡</mo><mrow><mo>(</mo><mi>A</mi><mo>)</mo></mrow></mrow>
</mfrac>
<mi>adj</mi><mo>⁡</mo><mrow><mo>(</mo><mi>A</mi><mo>)</mo></mrow>
</mrow>
</math>
A^-1 = 1/(det(A)) "adj"(A)
Inverse[A]
LinearAlgebra:-MatrixInverse(A);
B = inv(A);
A^(-1) = adj(A)/det(A)
ChatGPT に聞いて計算してもらう方法
あなたは行列計算のアシスタントです。次の計算を、必ずPythonコードを実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。 次の2つの正方行列について、それぞれ逆行列を求めてください。 1. A = [[4, 7], [2, 6]] 2. B = [[1, 2], [2, 4]] それぞれ、行列式の値と、逆行列が存在するかどうかを先に示したうえで、存在する場合は逆行列の成分を示してください。最後に、もとの行列と逆行列の積が単位行列になることも実行して確認してください。
計算ドリル(演習問題)
\(2 \times 2\) の逆行列を、公式「左上と右下を入れ替え、右上と左下の符号を変えて、行列式 \(ad - bc\) で割る」で求める演習問題です。
答えと解説は解答ページにあります。
使い方
-
1数値を入力計算したい数値を入力欄に入力します
-
2計算「計算する」ボタンを押します
-
3結果を確認計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
DataChefの特徴
専門知識不要、直感的で簡単な操作
個人情報を登録することなく使用できます
「ダウンロード」押下でファイルを自動削除
クレジット表記不要
商用利用許諾の連絡も不要です
