請選擇運算種類和矩陣的大小(列數、行數),在方格中輸入各元。轉置 Aᵀ 和次方 Aⁿ 只使用矩陣 A。
這個頁面可以做什麼
- 馬上算出 2×2~4×4(2×3 這類長方形也可以)矩陣的加法 \(A+B\)、減法 \(A-B\)、乘法 \(AB\)
- 也能計算把列與行互換的轉置 \(A^{T}\),以及方陣的次方 \(A^{n}\)(\(n\) 為 1~10)
- 乘法的「列 × 行的內積」等計算方法,可以用實際數值的計算過程確認
- 這個頁面還整理了公式的淺顯解說,以及可直接複製到 Excel、Google 試算表(MMULT、TRANSPOSE)、Python 使用的公式
這個計算有什麼用?
在 3D 繪圖中,旋轉、放大縮小角色等變換,都是用「坐標乘上矩陣」來計算。先把幾個變換的矩陣相乘,就能把多個變換合成一個矩陣。
遊戲機和電腦裡的 GPU(圖形處理器),就是專門用來大量做這種矩陣乘法的計算器。
數位影像本身就是一個矩陣:把每個像素的亮度依列與行排列。修圖 App 的模糊、銳利化等濾鏡,都是對這個矩陣的運算。
「把影像看成矩陣」也是影像辨識等 AI 技術的起點。
有很多未知數的聯立方程式,把係數排成矩陣,就能寫成一個方程式 \(A\boldsymbol{x} = \boldsymbol{b}\)。
在建築物的強度計算和電路分析中,會把幾千、幾萬個方程式寫成這個形式,用電腦的矩陣計算一次解出來。
把車站之間、人與人之間的連結,寫成「有連結為 1、沒有為 0」的矩陣(鄰接矩陣)。這時次方 \(A^{n}\) 的第 \(i\) 列第 \(j\) 行的元,就是「從 \(i\) 剛好經過 \(n\) 條連結到達 \(j\) 的走法數」。
這個想法是轉乘路線查詢和社群網路「朋友的朋友」分析的基礎之一。
國家或地區的經濟統計,會用一個稱為產業關聯表的大型矩陣,表示各產業向其他產業買了多少(在台灣由行政院主計總處編製)。「某個產業的需求增加時,其他產業的生產會增加多少」這種波及效果,就是用這個表的矩陣計算估算的(這個方法由獲得諾貝爾經濟學獎的李昂提夫〈Wassily Leontief〉提出)。
處理文字和影像的 AI(類神經網路),大部分的計算都是反覆進行「把輸入的一串數乘上學習得到的矩陣」。
因為訓練和執行 AI 的計算大多是矩陣乘法,擅長矩陣計算的 GPU 已經成為 AI 開發不可或缺的設備。
公式
符號與用語解說
符號
| \(A,\ B\) | A、B | 給矩陣取的名字。習慣上用大寫英文字母表示矩陣。 |
| \(a_{ij}\) | a 下標 i j | 矩陣 \(A\) 的第 \(i\) 列第 \(j\) 行的元(由上往下第 \(i\) 列、由左往右第 \(j\) 行的數),也稱為 \((i, j)\) 元。右下角的小字(下標)表示「位置」。 |
| \(b_{ij}\) | b 下標 i j | 矩陣 \(B\) 的第 \(i\) 列第 \(j\) 行的元。讀法和 \(a_{ij}\) 相同,只是矩陣的名字不同。 |
| \(m \times n\) | m 乘 n | 矩陣的大小(階數):\(m\) 列(橫的排列)、\(n\) 行(直的排列),稱為 \(m \times n\) 階矩陣。(例如 2×3 矩陣是直的 2 個、橫的 3 個,共 6 個數排成的矩陣) |
| \(c_{ij}\) | c 下標 i j | 把乘積 \(AB\) 設為 \(C\) 時,\(C\) 的第 \(i\) 列第 \(j\) 行的元。 |
| \(A^{T}\) | A 轉置(A transpose) | \(A\) 的轉置矩陣:把列與行互換的矩陣,也寫成 \(A^{\top}\) 或 \(A'\)。 |
| \(A^{n}\) | A 的 n 次方 | \(n\) 個 \(A\) 相乘的矩陣。只有方陣才有定義。 |
| \(\sum\) | sigma | 表示「全部加起來」的符號。\(\sum_{k=1}^{n} a_{ik} b_{kj}\) 表示把 \(k\) 從 1 到 \(n\) 的 \(a_{ik} b_{kj}\) 全部相加。 |
用語
| 矩陣 | 把數排成長方形(直橫)的形狀。其中每一個數稱為元。和試算表的表格一樣,用「第幾列、第幾行」指定位置。 |
| 列 | 矩陣中「橫的排列」。由上往下依序稱為第 1 列、第 2 列……(台灣的寫法,和日本、中國大陸的「行」「列」相反)。 |
| 行 | 矩陣中「直的排列」。由左往右依序稱為第 1 行、第 2 行……。記法是「直行橫列」:直的是行,橫的是列。 |
| 元 | 矩陣中的每一個數,也稱為元素。第 \(i\) 列第 \(j\) 行的元稱為 \((i, j)\) 元,用下標寫成 \(a_{ij}\)。 |
| 方陣 | 列數與行數相同(正方形)的矩陣。次方,以及本頁不處理的行列式、反方陣,都只對方陣討論。 |
| 轉置矩陣 | 把列與行互換的矩陣。\(m \times n\) 矩陣的轉置是 \(n \times m\) 矩陣。 |
| 內積 | 把兩串數「從頭依序兩兩相乘,再全部相加」所得的值。在矩陣乘法中,A 的列與 B 的行的內積,就是乘積的一個元。 |
| 線性代數 | 處理矩陣和向量的數學領域。大學理工科常列為一、二年級的必修課,是電腦繪圖、統計、AI 等應用的基礎。 |
建議先了解的基礎知識
為了能「理解意義」地使用本頁的計算,這裡整理了建議先了解的基礎知識。
| 正負數的四則運算(國中七年級,12~13 歲) |
|
| 代數式與下標(國中七年級~高中,12~18 歲) |
|
| 次方(國中七年級,12~13 歲) |
|
| 表格的列與行(國小起,7 歲~) |
|
用 Excel 計算的方法
| 矩陣 A 的第 1 列 | 1 | 2 |
| 矩陣 A 的第 2 列 | 3 | 4 |
| 矩陣 B 的第 1 列 | 5 | 6 |
| 矩陣 B 的第 2 列 | 7 | 8 |
| A+B 的第 1 列 | =B1+B3 | =C1+C3 |
| A+B 的第 2 列 | =B2+B4 | =C2+C4 |
| 矩陣 A 的第 1 列 | 9 | 8 |
| 矩陣 A 的第 2 列 | 7 | 6 |
| 矩陣 B 的第 1 列 | 1 | 2 |
| 矩陣 B 的第 2 列 | 3 | 4 |
| A−B 的第 1 列 | =B1-B3 | =C1-C3 |
| A−B 的第 2 列 | =B2-B4 | =C2-C4 |
| 矩陣 A 的第 1 列 | 1 | 2 |
| 矩陣 A 的第 2 列 | 3 | 4 |
| 矩陣 B 的第 1 列 | 2 | 0 |
| 矩陣 B 的第 2 列 | 1 | 2 |
| AB(從第 1 列自動展開) | =MMULT(B1:C2,B3:C4) |
| 矩陣 A 的第 1 列 | 1 | 2 | 3 |
| 矩陣 A 的第 2 列 | 4 | 5 | 6 |
| Aᵀ(從第 1 列自動展開) | =TRANSPOSE(B1:D2) |
| 矩陣 A 的第 1 列 | 1 | 1 |
| 矩陣 A 的第 2 列 | 0 | 1 |
| A³(從第 1 列自動展開) | =MMULT(MMULT(B1:C2,B1:C2),B1:C2) |
乘法用 MMULT 函數,轉置用 TRANSPOSE 函數。新版 Excel(Microsoft 365 等)會自動把結果展開到相鄰的儲存格(溢出)。第三個表格的 AB 是 4、4、10、8,第五個表格的 A³ 是 1、3、0、1。
舊版 Excel 請先選取和結果相同大小的範圍,再輸入公式,按 Ctrl+Shift+Enter 確定。
用 Google 試算表計算的方法
| 矩陣 A 的第 1 列 | 1 | 2 |
| 矩陣 A 的第 2 列 | 3 | 4 |
| 矩陣 B 的第 1 列 | 5 | 6 |
| 矩陣 B 的第 2 列 | 7 | 8 |
| A+B 的第 1 列 | =B1+B3 | =C1+C3 |
| A+B 的第 2 列 | =B2+B4 | =C2+C4 |
| 矩陣 A 的第 1 列 | 1 | 2 |
| 矩陣 A 的第 2 列 | 3 | 4 |
| 矩陣 B 的第 1 列 | 2 | 0 |
| 矩陣 B 的第 2 列 | 1 | 2 |
| AB(從第 1 列自動展開) | =MMULT(B1:C2,B3:C4) |
| 矩陣 A 的第 1 列 | 1 | 2 | 3 |
| 矩陣 A 的第 2 列 | 4 | 5 | 6 |
| Aᵀ(從第 1 列自動展開) | =TRANSPOSE(B1:D2) |
| 矩陣 A 的第 1 列 | 1 | 1 |
| 矩陣 A 的第 2 列 | 0 | 1 |
| A³(從第 1 列自動展開) | =MMULT(MMULT(B1:C2,B1:C2),B1:C2) |
在 Google 試算表中,MMULT、TRANSPOSE 的結果會自動展開到相鄰的儲存格(不需要按 Ctrl+Shift+Enter)。
用 Python 計算的方法
A = [[1, 2], [3, 4]]
B = [[2, 0], [1, 2]]
def matrix_add(x, y): # 加法(同一位置的元相加)
return [[x[i][j] + y[i][j] for j in range(len(x[0]))] for i in range(len(x))]
def matrix_multiply(x, y): # 乘法(A 的列與 B 的行的內積)
return [[sum(x[i][k] * y[k][j] for k in range(len(y))) for j in range(len(y[0]))] for i in range(len(x))]
def matrix_transpose(x): # 轉置(列與行互換)
return [[x[i][j] for i in range(len(x))] for j in range(len(x[0]))]
def matrix_power(x, n): # 次方(從左邊依序乘 n 次)
result = x
for _ in range(n - 1):
result = matrix_multiply(result, x)
return result
print("A + B =", matrix_add(A, B))
print("AB =", matrix_multiply(A, B))
print("A 的轉置 =", matrix_transpose(A))
print("A 的 3 次方 =", matrix_power(A, 3))
用 LaTeX 等數學式語言的寫法(可直接複製)
(A + B)ᵢⱼ = aᵢⱼ + bᵢⱼ
(A + B)_{ij} = a_{ij} + b_{ij}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub>
<mrow><mo>(</mo><mi>A</mi><mo>+</mo><mi>B</mi><mo>)</mo></mrow>
<mrow><mi>i</mi><mi>j</mi></mrow>
</msub>
<mo>=</mo>
<msub><mi>a</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub>
<mo>+</mo>
<msub><mi>b</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub>
</mrow>
</math>
(A + B)_(ij) = a_(ij) + b_(ij)
A + B
C := A + B;
C = A + B;
(A + B)_ij = a_ij + b_ij
cᵢⱼ = aᵢ₁b₁ⱼ + aᵢ₂b₂ⱼ + ⋯ + aᵢₙbₙⱼ
c_{ij} = \sum_{k=1}^{n} a_{ik} b_{kj}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>c</mi><mrow><mi>i</mi><mi>j</mi></mrow></msub>
<mo>=</mo>
<munderover>
<mo>∑</mo>
<mrow><mi>k</mi><mo>=</mo><mn>1</mn></mrow>
<mi>n</mi>
</munderover>
<msub><mi>a</mi><mrow><mi>i</mi><mi>k</mi></mrow></msub>
<msub><mi>b</mi><mrow><mi>k</mi><mi>j</mi></mrow></msub>
</mrow>
</math>
c_(ij) = sum_(k=1)^(n) a_(ik) b_(kj)
A . B
C := A . B;
C = A * B;
c_ij = ∑_(k=1)^n a_ik b_kj
(Aᵀ)ᵢⱼ = aⱼᵢ
(A^{T})_{ij} = a_{ji}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub>
<mrow><mo>(</mo><msup><mi>A</mi><mi>T</mi></msup><mo>)</mo></mrow>
<mrow><mi>i</mi><mi>j</mi></mrow>
</msub>
<mo>=</mo>
<msub><mi>a</mi><mrow><mi>j</mi><mi>i</mi></mrow></msub>
</mrow>
</math>
(A^T)_(ij) = a_(ji)
Transpose[A]
C := LinearAlgebra:-Transpose(A);
C = A.';
(A^T)_ij = a_ji
Aⁿ = AA⋯A
A^{n} = \underbrace{AA\cdots A}_{n}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msup><mi>A</mi><mi>n</mi></msup>
<mo>=</mo>
<mi>A</mi><mi>A</mi><mo>⋯</mo><mi>A</mi>
</mrow>
</math>
A^n
MatrixPower[A, n]
C := A^n;
C = A^n;
A^n
請 ChatGPT 幫忙計算的方法
你是矩陣計算的助理。請務必實際執行 Python 程式碼來進行下列計算,並只以執行結果的數值作為回答的依據(請不要用心算或猜測回答)。 針對矩陣 A = [[1, 2], [3, 4]]、B = [[2, 0], [1, 2]],請分別求出下列矩陣。 1. 和 A + B 2. 差 A − B 3. 乘積 AB 4. A 的轉置矩陣 5. A 的 3 次方 每一項都請列出使用的公式(把哪些元怎麼組合),以及執行結果的矩陣。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權