請選擇矩陣大小(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}\)。所以只要有反矩陣,做一次乘法就能得到解。
當只改變右邊的 \(\boldsymbol{b}\)、反覆求解時(例如結構分析或電路分析),這個方法特別有威力。如果反矩陣不存在(行列式為 0),就表示這個方程組不是恰好只有一組解。
在 3D 繪圖、遊戲和機器人控制中,旋轉、縮放、移動等變換都是用矩陣乘法計算。要從變換後的坐標回到變換前的坐標,就要用反矩陣。
例如在「從攝影機看的坐標」和「整個世界的坐標」之間切換(觀察矩陣 view matrix),或推算螢幕上點選的位置在 3D 空間中的哪裡,幾乎每一個畫面都會用到反矩陣。
把文字換成數字再乘以矩陣,訊息就變成密文(希爾密碼)。收件人只要乘以金鑰矩陣的反矩陣,就能還原成原本的訊息。
「矩陣做的事,由反矩陣復原」這一組關係,正好就是加密與解密,是最能直接體會反矩陣概念的例子。(實際上數字是用除以 26 的餘數來處理,所以金鑰必須是在這個數系中有反矩陣的矩陣。)
像「汽車產量增加時,鋼鐵和電力要多生產多少」這種產業之間的波及效果,是把產業間的交易整理成矩陣 \(A\),再乘以 \((I - A)^{-1}\)(李昂提夫逆矩陣)來計算。
政府公布公共建設或大型活動的經濟效益時常用這個方法(在台灣,行政院主計總處會編製產業關聯表),是反矩陣支撐公共決策的代表例子。
迴歸分析(最小平方法)會在廣告費和營業額等資料中畫出「最吻合的直線」,它的解就是用反矩陣寫成:\(\hat{\boldsymbol{\beta}} = (X^{\mathsf{T}}X)^{-1}X^{\mathsf{T}}\boldsymbol{y}\)(正規方程式的解)。
這個公式出現在每一本統計和機器學習的教科書中,反矩陣正位於 AI 從資料學習趨勢的起點。
公式
符號與用語解說
符號
| \(A\) | A | 矩陣的名稱。習慣上用大寫英文字母表示矩陣。 |
| \(A^{-1}\) | A 的反矩陣(A inverse) | 矩陣 \(A\) 的反矩陣。右上的 \(-1\) 是「−1 次方」的寫法,和數的倒數 \(a^{-1} = \dfrac{1}{a}\) 是同樣的概念(但矩陣不會寫成 \(\dfrac{1}{A}\) 這樣的分數)。 |
| \(I\) | I(單位矩陣) | 單位矩陣:從左上到右下的對角線元素是 1、其餘全是 0 的方陣。乘以任何矩陣都不會改變對方,扮演「數字 1」的角色。有時寫成 \(I_2\)、\(I_n\) 來表示大小,日本的課本則寫成 \(E\)。 |
| \(\det(A),\ |A|\) | A 的行列式 | 矩陣 \(A\) 的行列式。這個值不為 0 時反矩陣存在,為 0 時不存在。也常用直線括起來的 \(|A|\) 寫法。 |
| \(\operatorname{adj}(A)\) | A 的伴隨矩陣 | 矩陣 \(A\) 的伴隨矩陣:把每個元素的餘因子排好再轉置的矩陣。取英文 adjugate(舊稱 adjoint)的前三個字母,寫成 adj。 |
| \(a_{ij}\) | a 下標 i j | 矩陣 \(A\) 第 \(i\) 列第 \(j\) 行的元素(由上往下第 \(i\) 列、由左往右第 \(j\) 行的數)。右下的小字(下標)表示「位置」。 |
用語
| 反矩陣 | 相乘後得到單位矩陣的另一個矩陣,是數的「倒數」的矩陣版,寫成 \(A^{-1}\)。高中課本稱為「反方陣」,也有人叫逆矩陣。只有行列式不為 0 的方陣才有,用來解聯立一次方程式、把變換還原等。 |
| 單位矩陣 | 對角線(左上到右下)是 1、其餘全是 0 的方陣,高中課本稱為「單位方陣」。乘以任何矩陣都不會改變對方,相當於數字「1」。 |
| 方陣 | 列數和行數相同(排成正方形)的矩陣。反矩陣和行列式都只對方陣討論。 |
| 行列式 | 由方陣決定的一個數。可用來判斷:\(\det(A) \neq 0\) 時反矩陣存在。求法在姊妹頁「行列式計算機」有詳細說明。 |
| 可逆矩陣 | 行列式不為 0 的方陣,也稱為非奇異矩陣,有反矩陣。行列式為 0 的矩陣稱為奇異矩陣,沒有反矩陣。 |
| 餘因子 | 從矩陣刪去第 \(i\) 列和第 \(j\) 行後,剩下的小矩陣的行列式(子行列式)再乘上正負號 \((-1)^{i+j}\)。是組成伴隨矩陣的零件。 |
| 伴隨矩陣 | 把每個位置的餘因子排好,再把列與行互換(轉置)的矩陣,寫成 \(\operatorname{adj}(A)\)。除以行列式就是反矩陣。注意:在較進階的書中,英文的 adjoint 常指另一種矩陣(共軛轉置),所以英文名稱用 adjugate 比較不會混淆。 |
| 高斯-喬丹消去法 | 把矩陣 \(A\) 和單位矩陣 \(I\) 並排,反覆做列運算,直到左半邊變成 \(I\),這時右半邊就是 \(A^{-1}\)。大型矩陣主要用這個方法。 |
| 線性代數 | 處理矩陣與向量的數學領域。大學理工科系多在一、二年級列為必修,是電腦繪圖、統計、AI 等應用的基礎。 |
建議先了解的基礎知識
為了能「理解意義」地使用本頁的計算,這裡整理了建議事先了解的基礎知識。
| 正負數的四則運算(國中,12~15 歲) |
|
| 倒數(國小高年級~國中) |
|
| 矩陣的基礎與乘法(高中,15~18 歲;大學的線性代數) |
|
| 行列式(高中,15~18 歲;大學的線性代數) |
|
用 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 列是 0.6、-0.7,第 2 列是 -0.2、0.4。第二個表格:第 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 列是 0.6、-0.7,第 2 列是 -0.2、0.4;第二個表格:第 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 行的子行列式 x 正負號 / 行列式(同時完成轉置)
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 = I
A A^{-1} = A^{-1} A = I
<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>I</mi>
</mrow>
</math>
A A^-1 = A^-1 A = I
A . Inverse[A]
A . LinearAlgebra:-MatrixInverse(A);
I = A * inv(A);
AA^(-1) = A^(-1)A = I
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 程式碼來進行以下計算,並且只根據執行結果的數值作答(不要用心算或猜測作答)。 請分別求出以下兩個方陣的反矩陣。 1. A = [[4, 7], [2, 6]] 2. B = [[1, 2], [2, 4]] 每一個都請先列出行列式的值,以及反矩陣是否存在;如果存在,請列出反矩陣的元素。最後,也請執行驗證:原矩陣與反矩陣的乘積是單位矩陣。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權