矩陣與馬可夫鏈
☰ Contents
矩陣是按橫行和直列排成的一個長方形數表。矩陣乘以一個直列的數,會得到一個新的直列,所以矩陣是一條把一串數變成另一串數的規則;兩個矩陣的乘積,就是先套用一條規則,再套用另一條。
矩陣怎麼描述,怎麼相加?
描述一個矩陣要說它的階數:先說行數(橫向),再說列數(直向),所以 2 行 3 列的矩陣是 2 × 3 矩陣。一個元素用它所在的行和列來命名: 位於第 2 行、第 1 列。矩陣相加是對應元素逐一相加,所以兩個矩陣的階數必須相同。用分號隔開各行來書寫,(1 4; 2 0) + (3 −1; 5 2) = (4 3; 7 2),因為 1 + 3 = 4、4 − 1 = 3、2 + 5 = 7、0 + 2 = 2。這行得通,是因為兩個矩陣裡同一個位置放的是同一種量,例如某一家店某一種商品的銷量。階數不同的矩陣不能相加,因為有些元素找不到對應的夥伴。純量乘法是把每個元素都乘上這個數:3 乘 (1 4; 2 0) 等於 (3 12; 6 0)。檢查和的方法是減去其中一個矩陣,看能否得回另一個。
同樣的點,換了個方向:3×4和4×3
擺出24個點,再換一種擺法
詳見 矩陣的階數和矩陣的加減與純量乘法。
換你試試
A + B 的第 1 行第 2 列是什麼?
把這個矩陣乘以 4。第 1 行第 1 列是什麼?
矩陣乘法怎麼算,為什麼 AB 不等於 BA?
兩個矩陣相乘時,把左邊矩陣的每一行和右邊矩陣的每一列配對:對應元素相乘,再把乘積加起來。設 A = (1 2; 3 4)、B = (0 1; 1 0),A 的第 1 行配 B 的第 1 列得 1 × 0 + 2 × 1 = 2,完整的乘積是 AB = (2 1; 4 3)。這條規則讓乘積表示「先做一個變換,再做另一個」。AB 通常和 BA 不同:BA = (3 4; 1 2),因為 B 在左邊時交換的是 A 的兩行,在右邊時交換的是 A 的兩列。大小也可能讓乘積不存在:只有當 A 的列數等於 B 的行數時,AB 才存在,所以 2 × 3 乘 3 × 2 得到 2 × 2。檢查 BA 的一個元素:B 的第 1 行配 A 的第 1 列得 0 × 1 + 1 × 3 = 3。
A 的一行必須和 B 的一列一樣長,而兩個階數外側的數字,就是答案的階數。
這條規則之所以這樣定,是因為它在算帳:一行數量乘以一列價格,就是一家店的營業額。
反過來,3 × 2 乘 2 × 3 得到 3 × 3,所以兩個乘積連階數都不一定相同。矩陣乘法不滿足交換律。
單位矩陣 I 的主對角線上都是 1,其餘位置都是 0;乘以 I 不會改變任何東西,就像一個數乘以 1 一樣。A 的反矩陣是和 A 相乘得到 I 的那個矩陣。A 的冪呈現的規律用數學歸納法證明:先在 n = 1 時驗證公式,再把假設成立的矩陣多乘一次 A。詳見 矩陣的乘積、用矩陣乘積合併數據、為什麼 AB 不等於 BA、單位矩陣與零矩陣和用數學歸納法求矩陣的冪。
換你試試
這個乘積可以算出來嗎?
這個乘積的階數是多少?
行列式量的是什麼?
對於 2 × 2 矩陣 (a b; c d),行列式是 ad − bc:主對角線的乘積減去另一條對角線的乘積。它是矩陣把面積放大的倍數。(4 2; 5 3) 的行列式是 4 × 3 − 2 × 5 = 12 − 10 = 2,所以單位正方形變成面積為 2 的平行四邊形。這個公式算出的是面積,因為兩個直列 (4, 5) 和 (2, 3) 正是這個平行四邊形的兩邊,而 ad − bc 就是帶正負號的面積。行列式為負表示還做了一次鏡射。行列式為 0 則完全不同:整個平面被壓到一條直線或一個點上,所以矩陣沒有反矩陣,例如 (2 4; 1 2),其中 2 × 2 − 4 × 1 = 0。檢查:面積為 3 的圖形會變成面積 3 × 2 = 6。
det [[a, b], [0, 1]] = a × 1 − b × 0 = a,所以b從未出現:錯切不改變面積
把面積變成兩倍
行列式為 0 時,不同的點會落到同一個點上,再也沒有辦法把它們分開送回去。
行列式不為 0 時,求 (a b; c d) 的反矩陣只要三步:交換 a 和 d,改變 b 和 c 的正負號,再把每個元素除以 ad − bc。用乘法檢查:乘積是 I。
反矩陣一步就能解聯立方程。把方程組寫成 A X = b,係數放在 A 裡,未知數放在直列 X 裡,常數放在 b 裡,再把兩邊從左邊同乘 ,X 就單獨留下了。
3 × 3 行列式沿著一行展開:第 1 行的每個元素,乘以刪去它所在的行和列之後剩下的 2 × 2 行列式,正負號依次為 +、−、+。它量的是體積,而且恰好在沒有反矩陣時等於 0。3 × 3 反矩陣是餘因子矩陣的轉置除以行列式,一步就能解三個方程。詳見 2 × 2 矩陣的行列式、2 × 2 矩陣的反矩陣、用反矩陣解聯立方程、3 × 3 矩陣的行列式、3 × 3 矩陣的反矩陣和用反矩陣解三元方程。
換你試試
這個矩陣的行列式是多少?
這個矩陣有反矩陣嗎?
什麼是特徵值和特徵向量?
方陣 A 的特徵向量是一個非零的直列,A 只會把它拉長或縮短,而拉伸的倍數就是它的特徵值:。乘以 A = (4 −1; 2 1) 時,大多數直列都會改變方向,但 (1, 1) 回來時是 (3, 3),因為 4 × 1 − 1 × 1 = 3 且 2 × 1 + 1 × 1 = 3,所以 (1, 1) 是特徵值為 3 的特徵向量。特徵向量的任何倍數也是特徵向量,所以特徵向量指的是一個方向。負的特徵值會把方向反轉,0 則把它壓扁。特徵向量重要,是因為沿著它們,矩陣的作用就像普通的乘法,所以求冪很容易:把 A 作用五次,(1, 1) 就被放大 倍。求特徵向量要從特徵值開始,特徵值是 的解,每個特徵值再給出一個方向。驗證一個聲稱的特徵向量:A 乘 (1, 2) 得 (2, 4),是原直列的兩倍,所以另一個特徵值是 2。
Av 與 v 的方向相差 16°,所以 Av ≠ λv:A 在拉伸這個向量的同時也旋轉了它,因此它不是特徵向量
旋轉 v,直到 Av 與 v 落在同一條直線上
求特徵值時,把 改寫成 。一個非零直列被送到零,表示 沒有反矩陣,所以 。減去 就是從每個對角元素減去 ,所以這裡 ,這就是特徵多項式。它的根 2 和 3 就是特徵值。
對每個特徵值解 。在 時兩行都得出 y = x,所以 v = (1, 1);在 時兩行都得出 y = 2x,所以 v = (1, 2)。
把特徵向量作為 P 的各列,再把特徵值按同樣的順序放在 D 的對角線上。於是 A P = P D,所以 。冪也就跟著出來了,因為中間的每個 都互相抵消:,而 可以逐個元素求出。詳見 特徵值與特徵向量、特徵多項式、求特徵向量、2 × 2 矩陣的對角化和用對角化求矩陣的冪。
換你試試
長什麼樣子?
這個矩陣的特徵多項式是什麼?
什麼是馬可夫鏈,它為什麼會穩定下來?
馬可夫鏈在固定幾種狀態之間移動,每一步只取決於目前的狀態。移動的機率填成一個轉移矩陣 T,T 乘以今年的分布就得到明年的分布。假設每年城市裡有 0.2 的人搬到鄉下,鄉下有 0.3 的人搬到城市。T 的每一列代表一個起始狀態,所以每一列的元素加起來等於 1。如果兩地各有 500 人,明年城市就有 400 + 150 = 550 人,因為 500 人中有 留下,另外 500 人中有 搬來。正則的鏈會穩定下來,是因為 T 會讓某一個分布保持不變,而起點裡其餘的部分每一步都在縮小。這裡那個分布讓雙向的流量相等,城市因此佔所有人的 。陷阱狀態是沒有人會離開的狀態,最終會收容所有能到達它的人。驗證這個穩定分布: 等於 400 的 。
這個比例與 40/60 仍相差 60 個百分點,且每一步這個差距都會減半:(a₀ − 0.4) × 0.5ᵗ
從全部處於 A 開始,讓時間向前推進,直到比例不再變化
n 年後的分布是 乘以起始分布,而把 T 對角化,求 就很容易了。
轉移圖用狀態之間的箭頭表示同樣的數字,留在原地的比例畫成一個回到自己的圈。如果 T 的某個冪的所有元素都是正數,這條鏈就是正則的。一個狀態如果唯一的箭頭指回自己,進去的人就全被困住,這樣的鏈就不是正則的。
讓所有人一開始都在城市,分布就會穩定下來。穩定的分布是 T 不會改變的分布,所以它是 T 的特徵值為 1 的特徵向量。解 (T − I) s = 0:兩行都得出 2x = 3y,所以長期來看,城市和鄉下的人口比是 3 比 2。
每個轉移矩陣都有特徵值 1,因為它的每一列加起來都是 1。其餘特徵值的大小都小於 1,所以它們在任何起點中所佔的部分每一步都在縮小,最後剩下的就是特徵值 1 的特徵向量。PageRank 就是網頁之間連結矩陣的這個向量。詳見 轉移矩陣、轉移圖和長期穩定狀態。
換你試試
城市人口有百分之 80 留下。第 1 列下面填的是什麼?
在轉移矩陣中,哪一組元素相加是 1?
接下來通往哪裡
矩陣運算說明矩陣對一個直列做了什麼,行列式說明這能不能復原,特徵值則說明矩陣作用很多次之後會發生什麼。馬可夫鏈就是把最後這個問題,放在一個由機率組成的矩陣上來問。
值得點名的錯誤
- 逐個元素相乘。矩陣乘法是把左邊矩陣的每一行和右邊矩陣的每一列配對。
- 以為 AB = BA。兩個都要算出來。
- 把矩陣約掉。只有當 A 有反矩陣時,AB = AC 才能推出 B = C。
- 把行列式為零當成一個很小的答案。它表示這個矩陣沒有反矩陣。
矩陣對圖形的作用,在全等、圓的定理與變換(英文)中繼續;特徵多項式用到的因式分解,來自二次方程式與多項式。相關指南:積分的應用與極座標曲線(英文)和複數。
輪到你了
三題試一試,點選作答。
任何矩陣乘以單位矩陣,得到
[[2, 1], [3, 4]] 的行列式
馬可夫轉移矩陣的每一直列加起來等於
常見問題
- 為什麼矩陣的 AB 和 BA 不一樣?
- 因為矩陣代表一個動作,而動作一般不能交換順序。把一本書先轉九十度再翻面,和先翻面再轉九十度,最後的位置不一樣。矩陣乘法的定義就是把動作依序組合起來,所以它也繼承了這種對順序的依賴。有些矩陣確實滿足 AB 等於 BA,但那是這幾個矩陣碰巧如此,不是規則。
- 矩陣的行列式告訴你什麼?
- 它是矩陣把面積(二維)或體積(三維)放大的倍數。行列式為 3 表示每個區域都變成原來的三倍大,行列式為負則表示矩陣還把圖形翻了面。行列式為零表示矩陣把一切壓扁了,這也是行列式為零的矩陣沒有反矩陣的原因:資訊已經被毀掉,無法再找回來。
- 怎麼用矩陣解聯立方程?
- 把方程組寫成係數矩陣乘以未知數直列、等於常數直列,然後兩邊同乘反矩陣。這樣一邊只剩下未知數,一次求反矩陣加一次乘法,就同時得出每一個未知數。如果行列式為零,反矩陣就不存在,這正好對應方程組無解或有無限多解的情況。
- 用白話說,特徵向量是什麼?
- 特徵向量是矩陣不會讓它轉向的方向——落在這個方向上的東西只會被拉長或縮短。拉長的倍數就是特徵值。矩陣作用時,大多數方向都會被轉動;特徵向量是少數仍指向原方向的特殊方向,而反覆作用最後會把一切都排到它們上面。
- 什麼是馬可夫鏈?
- 它是一個在固定幾種狀態之間移動的系統模型,下一步往哪裡走的機率只取決於目前的狀態,與過去的歷程無關。這些機率存放在轉移矩陣裡,乘一次這個矩陣,模型就前進一步。天氣、顧客流失、棋盤遊戲的位置和文字預測,都常常用這種方式建模。
- 為什麼馬可夫鏈會趨於穩定狀態?
- 因為反覆乘以轉移矩陣,會把任何起始分布拉向這個矩陣的主特徵向量。每個轉移矩陣都恰好有一個特徵值等於 1,對應的特徵向量就是鏈會原封不動重現的那個分布。其餘的成分每一步都在縮小,所以走了足夠多步之後,起點就不再重要。