矩陣乘向量:混合各行
下面這幅圖能讓一切豁然開朗。要算 A 乘 向量 x,就把 x 裡的數字當作權重,用每個權重去乘 A 的對應行,再把結果加起來。輸出就是 A 各行的一個混合。
[[2,0],[0,3]] * (1,1) = 1*(2,0) + 1*(0,3) = (2,0) + (0,3) = (2,3)
矩陣乘矩陣 = 先做一個,再做另一個
矩陣乘矩陣 不過是把這個想法重複一遍。把兩個矩陣都讀成機器,乘積 A*B 的意思是:先讓向量穿過 B,再穿過 A。這種串聯叫做 複合。所以 A*B 作用在 x 上,等於 A 作用在(B 作用在 x 上的結果)上。
- 從右往左讀 A*B:B 先發生,A 後發生。
- 乘積的第 j 行,就是 A 作用在 B 的第 j 行上的結果。
- 把這些輸出行並肩排好——那就是乘積矩陣。
形狀必須對得上,而且順序很重要
只有當 A 的行數等於 B 的列數時,才能算 A*B:(m 乘 n)乘(n 乘 p)得到(m 乘 p)。中間那兩個數字必須相等,然後被「約掉」。如果它們不相等,乘積根本就不存在。
A=[[0,-1],[1,0]] (rotate) B=[[2,0],[0,1]] (stretch) A*B = [[0,-1],[2, 0]] B*A = [[0,-2],[1, 0]] <- different!
什麼都不做的矩陣
單位矩陣 I 在對角線上全是 1,其餘全是 0。乘上它,向量或矩陣都原封不動:I*x = x,A*I = A。它就是矩陣世界裡的1——那台什麼都不做的機器。
[[1,0],[0,1]] * (5,7) = (5,7) <- unchanged