不少同學在初學線性代數(shù)時感到迷茫、痛苦,體會不到課程的實際意義。這很大程度上是因為,教材為了由淺入深、循序漸進,須從基礎的抽象概念講起,而真正直觀的部分,往往要等到后面的細分領域或具體應用。于是初學者往往知其然,不知其所以然;只見樹木,不見森林。希望本文能讓你換個視角,以輕松有趣的日常眼光,看到一個不一樣的線性代數(shù)。
本文是系列文章《N文粗通線性代數(shù)》的第二篇,通過矩陣初等變換來引入矩陣的逆及其性質。主要思路是:消元法求解線性方程組→線性方程組的初等變換→矩陣的初等行(列)變換→化矩陣為“標準形”,從而可以輕易地寫出解。
撰文 | 吳進遠
上回書說到,某近視宅男,某日下樓到早點鋪買早餐。眼鏡忘在家里,看不清黑板上寫的價目。于是,宅男就一邊排隊,一邊聽著前邊顧客買早點的品種數(shù)量,和服務員小妹報的總價,據(jù)此計算各種早點品種的單價。
為了方便讀者理解,我們把幾位顧客的購買數(shù)據(jù)列成下面一個表:
(1)(可逆)矩陣乘法的逆運算
說了半天,該我們的近視宅男登場了。
他需要根據(jù)排隊時聽到的交易數(shù)據(jù),算出每一種食品的單價。這就是說,他要求出一組多元一次方程的解。
這樣一個方程組,也可以寫成矩陣的形式,只不過,現(xiàn)在每一種食品的單價是未知數(shù)。
換句話說,他要做(可逆)矩陣乘法的逆運算。
(2)單位矩陣
一般而言,做逆運算比做正向的運算要難,(可逆)矩陣的逆運算也不例外。不過我們可以通過我們的直覺與經(jīng)驗,獲得一些啟發(fā)。
比如趕巧了,前面三個顧客:
第一位買了一個油餅,“3元”——服務員小妹報價;
第二位買了一個茶葉蛋,“4元”;
第三位買了一碗豆腐腦,“7元”。
這樣一來,我們不費吹灰之力就知道了三種食品的單價。用矩陣乘法寫出來,就是:
這種左上到右下對角線元素為1,其他非對角線元素都為0的矩陣,叫做單位矩陣,有時也稱恒等矩陣。單位矩陣通常用字母 I 表示,也有教科書或文獻用E或者U表示的。單位矩陣與任何其他矩陣相乘,結果與原矩陣相等。就像用1乘以任意實數(shù),結果都與原數(shù)相同。
(3)對角矩陣
像上面這么巧的事很難碰上,我們可以將條件放寬一些,每個顧客不限定必須買一份食品。
比如一個顧客買了3個茶葉蛋,花了12元,等等。
這種情況也難不倒我們,只要做簡單的除法,就能算出茶葉蛋的單價。
這種情形對應的矩陣叫對角矩陣,其中只有對角元素不是0,其他非對角元素都是0。前面談到的單位矩陣是對角矩陣的特殊情況。
(4)上三角矩陣
實際上,對角矩陣這種情形需要三位顧客都只購買一種食品,這個條件仍然太苛刻。我們可以把條件進一步放寬:設想一位顧客購買了一種食品,另一位購買了兩種,再一位購買了三種。
比如,第三位只買了豆腐腦,
第二位買了茶葉蛋和豆腐腦,
而第一位買了所有三種食品。
寫成矩陣乘法,就會呈現(xiàn)下面這個樣子:
這個矩陣叫上三角矩陣,它只有對角線以及上部元素可能不是0,而下部的非對角元素都是0。在這個情形下,想計算各個食品的單價也很容易。
從第三筆交易,我們用一次除法,就可以算出豆腐腦的單價。
再看第二筆交易,既然豆腐腦的單價知道了,茶葉蛋的單價也不難算出來。
接著看第一筆交易,雖然顧客買了所有三種食品,但其中兩種的單價已經(jīng)算出來了,因而只剩下一個未知數(shù),也很容易算出來。
(5)消元法
不過,理想豐滿現(xiàn)實骨感,在一般的情況下,我們可能碰不到這些容易計算的情況。
因此,我們需要把一般的交易,通過某種運算,變換成上面談到的這些容易計算的情形,最終得到未知數(shù)的解。
比如我們開頭談到前三位顧客實際的交易,構成了三個三元一次方程。一次方程有時也叫線性方程。
我們的任務,是通過解這個線性方程組,求出它的三個未知數(shù)。
根據(jù)前面的提示,在求解中,我們應該盡量把非對角的元素,也就是方程組中左邊非對角的系數(shù)變成0。
我們中學里學過解線性方程組的消元法,就是把一個方程左右兩邊,同時加減另一個方程的某個倍數(shù),就可以把其中一個未知數(shù)的系數(shù)消成0。
比如:(2)-2*(1) ,(3)-3*(1),就可以把第二、第三兩個方程的第一個系數(shù)消掉
我們再回過頭去看一下宅男思考的那張圖,就能慢慢體會其中思路。
注意他把第二行和第三行原來的黑字劃掉,寫上了對應的藍字,就反映了這樣一個計算過程。
進一步,通過 (3')-(2'),就可以把第三個方程中的第二個系數(shù)消掉(對應于圖中第三行劃掉藍字,寫上紫字):
但如果有草稿紙,普通同學也能算出來。
這種消元的過程,可以看成是根據(jù)已知顧客的交易數(shù)據(jù),組合出一些虛擬顧客的虛擬交易,以方便我們算出各個食品的單價。
(6)線性組合與線性相關
以上運算是把方程組中的系數(shù)拿來乘以一定的倍數(shù)再互相加減,我們通常把這種運算叫線性變換。得出的結果叫原來方程的線性組合。而這樣得到的新方程與原來的方程組線性相關。過去有句話叫“線性相關,真是一關”?,F(xiàn)在我們打怪升級,算是過了這一關的一小半。
線性組合是矩陣乘法的拿手好戲,像我們前面說的消元運算,可以很簡單地寫成矩陣的乘法。
我們把線性方程組(1) (2) (3)等號兩邊的系數(shù)拼在一起,構成一個增廣矩陣:(A|y)。
7)逆矩陣
類似B這種矩陣,它和A相乘,得到單位矩陣I。我們把B稱為A的逆矩陣。很多
不過,這里提醒讀者不要把這個-1的上標與倒數(shù)或-1次方混淆,逆矩陣不是通過簡單的除法算出來的。
逆矩陣只有正方矩陣可能有。這意味著要求出N個未知數(shù),必須有N個方程,或者說N個約束條件。方程(約束條件)多于或少于未知數(shù)個數(shù)都會給我們的求解運算帶來一些麻煩,我們后面會談到。
不過,并不是所有方陣都有逆矩陣,大家也許學到過,只有滿秩的方陣有逆矩陣。方陣滿秩等價于它的行列式不等于0。
(8)計算機求解矩陣的逆
近視宅男計算食品單價的過程,實際上是求解線性方程組的過程。而求解線性方程組的過程,可以看成是求解A的逆矩陣的過程。
前面介紹的算法聽起來挺麻煩,但現(xiàn)在有了計算機,編好程序讓計算機算就非常方便。大家從網(wǎng)上可以搜到很多矩陣求逆的在線計算器,除了算出結果,還可以幫助我們理解計算的過程。作者沒有近視宅男那么強的心算能力,于是用網(wǎng)上的在線矩陣求逆計算器試驗了一下,結果如下圖所示。
在上面的計算過程中大家可以看到,計算開始時,程序在原矩陣右邊貼了一個單位矩陣,二者組成一個增廣矩陣。通過消元,把左邊變成單位矩陣,于是右邊就成了原始矩陣的逆矩陣。
最后的結果是:
類似的運算,有些書上叫高斯消去法,但實際上,這種運算方法并不是高斯首創(chuàng)。在高斯之前,牛頓就已經(jīng)使用類似的方法了。那么這個方法是不是牛頓發(fā)明的呢?好像也沒有看到有科學史文獻提及是他發(fā)明的。我最近在一本教科書Basic Linear Algebra (作者是蘇格蘭教授T.S. Blyth和E.F. Robertson) 上看到,有一本書“The Nine Chapters on the Mathematical Art”上,就有這樣的消元法。我順著這個線索查了一下,這本書叫《九章算術》,里面確實有。
在人類智力活動中,類似的例子非常多。前人做出某個成果,后人沒有讀過文獻,于是又重新發(fā)現(xiàn)一次。就以我自己為例吧,我自己早年就有過一個發(fā)明,重復了整整100年前前人的發(fā)明。更有意思的是,我過了30多年才知道,前人已經(jīng)在130多年前做出了這個發(fā)明。
(8)逆矩陣的一些性質
一個滿秩的方陣A和它的逆矩陣B之間有很多很有用的性質。
比如
AB=I,
而且
BA=I。
你可能覺得,這有什么可大驚小怪的,就像:
2×0.5=0.5×2=1,
可是問題沒有那么簡單。一般來說,矩陣乘法是不符合交換律的,只有在一些特殊的情況下,才會有像這樣可以交換的情形。
我們這里不做嚴格的證明,僅僅用買早餐這個事來說明一下這兩個關系式是什么意思。我們仍然假設早餐店賣三種食品,三個顧客購買品種的向量互相線性無關,因此購物矩陣A是一個3×3的滿秩矩陣。根據(jù)這個矩陣A,近視宅男可以算出一個逆矩陣B。
對于任意的一組價格 x,服務員小妹都可以算出三位顧客的購物金額:
y = Ax。
而反過來,近視宅男可以根據(jù)前面三位顧客的購物金額 y,反過來算出三種食品的價格:
x = By。
因此:x = B(Ax) = (BA)x。由于這個關系式對任意的價格向量都成立,我們可以證明 BA = I(這里略去500字證明過程)。
反過來,對于任意的一組購物金額 y,近視宅男都可以算出三種食品的價格:
x = By。
而服務員小妹則可以根據(jù)三種食品的價格 x,算出三位顧客的購物金額:
y = Ax。
因此:y = A(By) = (AB)y。由于這個關系式對任意的購物金額向量y都成立,我們可以證明 AB = I(這里略去500字證明過程)。
從 AB = I 出發(fā),如果在等式兩邊從左邊乘上一個 B,我們會得到:
BAB = B。
同樣,在等式兩邊從右邊乘以一個 A,可以得到:
ABA = A。
像這樣形狀的兩個關系式,我們今后會多次看到。這里提醒讀者注意,ABA = A 和 BAB = B 這兩個關系式與 AB = I和 BA = I 不是等價的。我們只能從 AB = I 或 BA = I 推出 ABA = A 和 BAB = B。但反過來不行。比如,你不能從 ABA = A,兩邊“劃掉”一個A,得到 AB = I。
(9)左逆矩陣與右逆矩陣
對于一個矩陣A,假如另一個矩陣B從左邊與它相乘而得到單位矩陣,也就是說:
BA=I,
則矩陣B是A的左逆矩陣。
而如果從右邊乘,得到單位矩陣:
AB=I,
則B是A的右逆矩陣。
對于滿秩方陣,它的逆矩陣既是左逆,也是右逆。但在一般的情況下,比如不是方陣,一個矩陣可能只有左逆或者只有右逆。
為了方便讀者理解,我們把幾位顧客的購買數(shù)據(jù)重新列在下表:
我們這個早餐店賣三種食品,表中有四個顧客。對于給定的單價向量x,根據(jù)每位顧客購買數(shù)目,服務員小妹可以算出四位顧客購物總價組成的向量y。寫成矩陣是:
y = Sx 。
這里顧客購買數(shù)目組成的矩陣S有3列4行,它是一個“瘦高”的矩陣。為了方便讀者注意到這是一個瘦高矩陣,我們特意用S這個拼音字母來代表它。
當這個矩陣是列滿秩的時候,它存在一個左逆矩陣P。利用這個左逆矩陣,近視宅男可以根據(jù)顧客購物總額向量y,反算出單價向量x,即:
x = P y。
這個左逆矩陣P有4列3行,它是一個“矮胖”的矩陣。為了方便讀者注意到這是一個胖矩陣,我們特意用P這個字母來代表它。
對于任意價格向量x,服務員小妹算出顧客購物總額 Sx,然后近視宅男可以反向算出價格向量:
x = P (Sx)。
因此 P 這個操作可以逆轉抵消 S 這個操作,我們可以證明:
PS = I,
P是S的左逆。通常情況下左逆 P 可能不是唯一的,我們可能會根據(jù)其他條件從許許多多左逆中挑一個。
在服務員小妹算出的顧客購物總額 y = S x 之中,所有購物額都是靠譜的,沒有互相矛盾的情形,以此為基礎,宅男才能算出正確的價格 x = P (S x)。但如果基于任意顧客購物總額向量 y1 情況就不一定了。比如某個顧客可能信口開河說這頓早餐花了200元,這樣一來所有的計算就都亂了。
左逆矩陣與右逆矩陣是更寬范圍內的廣義逆矩陣中的兩種特殊情況,我們后面會討論到。(未完待續(xù))
特 別 提 示
1. 進入『返樸』微信公眾號底部菜單“精品專欄“,可查閱不同主題系列科普文章。
2. 『返樸』提供按月檢索文章功能。關注公眾號,回復四位數(shù)組成的年份+月份,如“1903”,可獲取2019年3月的文章索引,以此類推。
版權說明:歡迎個人轉發(fā),任何形式的媒體或機構未經(jīng)授權,不得轉載和摘編。轉載授權請在「返樸」微信公眾號內聯(lián)系后臺。